-
BeanFacotry
- BeanFactory提供了一种先进的配置机制来管理任何种类bean(对象),这种配置机制考虑到任何一种可能的存储方式
-
ApplicationContext
- 建立在BeanFactory,具有BeanFactory的所有功能和行为
-
MessageSource, 提供国际化的消息访问
- 扩展了MessageResource接口
- 资源访问,如URL和文件
- 事件传播
- 载入多个(有继承关系)上下文 ,使得每一个上下文都专注于一个特定的层次,比如应用的web层
-
不同点
-
选用哪个
- BeanFactory是延迟加载,如果Bean的某一个属性没有注入,BeanFacotry加载后,直至第一次使用调用getBean方法才会抛出异常
- ApplicationContext则在初始化自身是检验,这样有利于检查所依赖属性是否注入;所以通常情况下我们选择使用ApplicationContext
-
特性表
- 特性 BeanFactory ApplicationContext
- Bean 实例化/装配 Yes Yes
- 自动 BeanPostProcessor 注册 No Yes
- 自动 BeanFactoryPostProcessor 注册 No Yes
- 便捷的 MessageSource 访问( i18n) No Yes
- ApplicationEvent 发送 No Yes
-
关系
- BeanFactory提供了配置框架和基本的功能
- ApplicationContext建立在BeanFactory之上,并增加了其他的功能
- 一般来说,ApplicationContext是BeanFactory的完全超集, 任何BeanFactory功能和行为的描述也同样被认为适用于ApplicationContext