BeanFactory与ApplicationContext的联系和区别

BeanFactoryApplicationContext是Spring的两大核心接口,都可以作为Spring中的容器,二者的区别如下:

区别一:(功能上的区别)

BeanFactory是Spring的最底层接口,定义了IOC的基本功能,包含:各种Bean的定义、加载、实例化、依赖注入以及生命周期的管理。

ApplicationContext接口继承了BeanFactory,除了提供BeanFactory所具有的基本功能以外,它还提供了更完整的框架功能:他还继承了MessageSource,因此还支持国际化,资源文件访问等功能;

BeanFactory和ApplicationContext的部分继承关系

区别二:(加载形式的的区别)

BeanFactory=======>延迟加载

BeanFactory在初始化容器时,并未实例化Bean,直到需要使用某个Bean(调用getBean()方法) 时才实例目标Bean,导致不能及时发现可能存在的一些配置上的问题。

ApplicationContext==>立即加载

ApplicationContext 则在初始化应用上下文时就实例化所有单实例的Bean,我们可以及时的发现配置中有可能存在的问题;由于ApplicationContext启动后加载了所有的单实例Bean,所以运行时速度比较快;唯一的不足在于它占用内存空间,配置的Bean较多时,启动会比较慢。

区别三:(支持扩展点上的区别)

BeanFactoryApplicationCotext都支持BeanPostProcessor,BeanFactoryPostProcessor的使用:

BeanFactory需要手动注册

ApplicationContext是自动注册

关于BeanPostProcessor,BeanFactoryPostProcessor:

BeanPostProcessor可以在spring容器实例化bean之后,在执行bean的初始化方法前后,添加一些自己的处理逻辑;

BeanFactoryPostProcessor是在spring容器加载了bean的定义文件之后,在bean实例化之前执行的。接口方法的入参是ConfigurrableListableBeanFactory,使用该参数,可以获取到相关bean的定义信息

区别四:(创建方式上的区别)

BeanFactory通常以编程的方式被创建,ApplicationContext还能以声明的方式被创建。

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值