上次说到,@Scope("singleton")或者不写默认是单实例方式,ioc容器启动时,会调用方法创建对象放到ioc容器中。
但是可以使用懒加载方式,让ioc容器启动时,不创建对象,在第一次使用时,再去创建对象放到ioc容器,只需要添加@Lazy
ok,我们看代码。
@Lazy
@Bean
public Person person(){
System.out.println("给容器中添加Person....");
return new Person("zhangsan",24);
}
调用测试方法
@Test
public void test02(){
AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(MainConfig2.class);
System.out.println("ioc容器创建完成....");
Object person = annotationConfigApplicationContext.getBean("person");
Object person2 = annotationConfigApplicationContext.getBean("person");
System.out.println(person==person2);
}
测试结果为:
ioc容器创建完成....
给容器中添加Person....
true
可以看到,ioc容器创建完成后,并没有创建对象,而是在第一次使用时才添加对象到容器中,并且每次获取到的对象都是一个对象。