单实例bean:默认在容器启动的时候创建对象
多实例bean:容器启动的时候不创建对象 第一次使用(获取)Bean的时候创建对象 并初始化
测试代码
@Test
void scopeTest2(){
//配置类测试
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig.class);
System.out.println("容器创建完毕");
System.out.println("准备获取bean...");
Object person = applicationContext.getBean("person");
System.out.println("创建之后获取的 "+person.toString());
}
单实例 测试
默认情况
@Configuration
public class MainConfig {
//给容器注入一个bean,类型为返回值的类型,id默认使用方法的id
@Bean("person")
public Person getPerson(){
System.out.println("准备创建person...");
return new Person("qd",21);
}
}
运行结果
加上懒加载 @Lazy
@Configuration
public class MainConfig {
//给容器注入一个bean,类型为返回值的类型,id默认使用方法的id
@Bean("person")
@Lazy
public Person getPerson(){
System.out.println("准备创建person...");
return new Person("qd",21);
}
}
多实例 测试
@Configuration
public class MainConfig {
//给容器注入一个bean,类型为返回值的类型,id默认使用方法的id
@Bean("person")
@Scope("prototype")
public Person getPerson(){
System.out.println("准备创建person...");
return new Person("qd",21);
}
}