Spring中BeanFactory和ApplicationContext的区别
记得有个视频详细讲过,结果找不到了,好像被删了。
BeanFactory: 原生的,不是给我们开发用的。在调用 getBean() 的时候才会创建对象。
ApplicationContext: 这个是个接口,是 BeanFactory 的子,可以实现更多。在加载xml的时候就会创建对象了,目前大都采用这个。
创建一个 Bean进行测试
public class Stu {
public Stu(){
System.out.println("stu...构造函数");
}
}
创建一个测试类:
xml文件
<bean id="stu" class="com.hhm.spring5.collectiontype.Stu"></baen>
@Test
public void testStu(){
Resource resource = new ClassPathResource("bean3.xml");
BeanFactory context = new XmlBeanFactory(resource);
System.out.println("还未获取Bean");
Stu stu = context.getBean("stu", Stu.class);
}
结果输出:
很明显,读取了配置,但是对象还没创建,如果读取时候就创建,那么构造函数就会先执行了。
@Test
public void testStu(){
ApplicationContext context1 = new ClassPathXmlApplicationContext("bean3.xml");
System.out.println("还未获取Bean");
Stu stu1 = context1.getBean("stu", Stu.class);
}
结果输出:
说明在读取xml的时候,对象就已经创建了,因为执行了构造函数。然后再执行 "还未获取Bean"的输出。