java手记:Spring中BeanFactory和ApplicationContext的区别

9 篇文章 0 订阅

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"的输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值