Spring中ApplicationContext和beanfactory区别


BeanFacotry是spring中比较原始的Factory。原始的BeanFactory无法支持spring的许多插件,如AOP功能、Web应用等。 
ApplicationContext接口,它由BeanFactory接口派生而来,因而提供BeanFactory所有的功能。ApplicationContext以一种更向面向框架的方式工作以及对上下文进行分层和实现继承,ApplicationContext包还提供了以下的功能: 
  • MessageSource, 提供国际化的消息访问  
  • 资源访问,如URL和文件  
  • 事件传播  
  • 载入多个(有继承关系)上下文 ,使得每一个上下文都专注于一个特定的层次,比如应用的web层  

具体来说 2者有如下几点区别:
1. ApplicationContext是BeanFactory的子接口,具有BeanFactory的所有功能,此外,还提供了其他功能,如:资源访问,事件机制等。

2.BeanFactory只能以java编程显示创建,而ApplicationContext能以声明的方式创建,如使用ContextLoader。当然你也编程的方式创建ApplicationContext实例 。 

3.BeanFactroy采用的是延迟加载形式来注入Bean的,即只有在使用到某个Bean时(调用getBean()),才对该Bean进行加载实例化,这样,我们就不能发现一些存在的Spring的配置问题。而ApplicationContext则相反,它是在容器启动时,一次性创建了所有的Singleton作用域的Bean以及这些Singleton作用域的bean所引用的bean。这样,在容器启动时,ApplicationContext实例化过程比BeanFactory实例化过程时间和内存开销大,但是我们可以在容器初始化阶段就发现Spring中存在的配置错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值