一、Bean对象创建的3种方式
(2)注解--@Componet/@Autowired/@Value
(3)Java配置类--@Configuration/@Bean/@Value(本文)
优先级为(1)>(3)>(2)
二、Java配置类方式
@Configuration注解用于代替xml文件
@Bean用于代替<bean>标签
2.1 创建简单/复杂对象示例
(1)pom.xml中引入spring-context包(同XML配置)
(2)Bean定义
package com.fuping3.config;
import com.fuping3.entity.User;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import java.sql.Connection;
import java.sql.DriverManager;
@Configuration
@PropertySource("ApplicationContext.properties")
public class MyConfig {
//返回值相当于类全限定名,方法名相当于id
@Bean
public User myUser(@Value("${config.user.id}")int id){
User user=new User();
user.setId(id);
user.setUser_name("小明");
user.setAge(90);
user.setGender('0');
return user;
}
//创建复杂对象
@Bean
public Connection conn() throws Exception {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/fuping3?useSSL=false", "root", "123456");
return conn;
}
}
(3)Bean实现类
package com.fuping3.entity;
import java.io.Serializable;
public class User implements Serializable {
private Integer id;
private String user_name;
private Integer age;
private char gender;
//省略set方法/toString方法
}
(4)测试代码
@Test
public void test(){
//可以指定配置类类型或配置类包名
//AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext("com.fuping3.config");
User myUser = (User) context.getBean("myUser");
System.out.println(myUser);
System.out.println("--------");
Connection conn = (Connection) context.getBean("conn");
System.out.println(conn);
}
运行结果
User{id=5, user_name='小明', age=90, gender=0}
--------
com.mysql.jdbc.JDBC4Connection@779568