1,@ComponentScan指定基本扫描包+@Component注册bean实例
1,创建一个类对象,用注解@Component,目的是将当前类注入到IOC容器中进行管理。默认命名策略是类名首字母小写。也可以用(value=“**”)将唯一标识beanName指定为value的属性值。
@Component(value = "student")
//@Component
public class Student {
private String name;
private String number;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public Student() {
}
public Student(String name, String number) {
this.name = name;
this.number = number;
}
}
2,创建一个MyConfig类,写一个方法返回该类对象的值。用@ComponentScan(basePackages=“**”)扫描指定的包,寻找bean。
//方法1 Component + ComponentScan
@ComponentScan(basePackages = "com.config.c1")
public class MyConfig {
public Student student(){
return new Student();
}
}
3,写一个测试类:1,获取IOC容器。2,获取bean实例。3,使用bean实例
public class MainTest {
public static void main(String[] args) {
ApplicationContext ac = new AnnotationConfigApplicationContext(MyConfig.class);
Student student1 = ac.getBean("student", Student.class);
student1.setName("张三");
student1.setNumber("001");
System.out.println("student,name="+student1.getName()+",number="+student1.getNumber());
}
}
2,@Bean将当前方法的返回值注入到IOC容器中。
1,创建一个类对象。同方法1中1,不需要写注解
2,创建一个MyConfig类,用注解@Bean将当前方法的返回值注入到IOC容器中,同样可以使用(value=“**”),将唯一标识beanName指定为value的属性值。
public class MyConfig {
@Bean
//@Bean(value="student")
public Student student(){
return new Student();
}
}
3,写一个测试类:1,获取IOC容器。2,获取bean实例。3,使用bean实例
同方法1中3.