首页   快速返回

BeanFactory和ApplicationContext的区别     所属分类 spring
public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory,
		MessageSource, ApplicationEventPublisher, ResourcePatternResolver
		
public interface ListableBeanFactory extends BeanFactory

public interface HierarchicalBeanFactory extends BeanFactory

ListableBeanFactory
Extension of the BeanFactory interface to be implemented by bean factories that can enumerate all their bean instances, 
rather than attempting bean lookup by name one by one as requested by clients.

ListableBeanFactory 扩展了 BeanFactory 接口 ,可遍历所有bean实例


HierarchicalBeanFactory
BeanFactory getParentBeanFactory();
boolean containsLocalBean(String name);

层次关系 , 可设置 parentBeanFactory

BeanFactory 最底层的接口,包含了各种Bean的定义,读取bean配置,管理bean的加载、实例化,控制bean的生命周期,维护bean之间的依赖关系。

ApplicationContext 继承 BeanFactory  扩展了 BeanFactory 功能 
继承 ListableBeanFactory 可遍历所有bean实例
继承 MessageSource 接口,支持国际化。
继承 ResourcePatternResolver 统一的资源访问 ,支持多种配置
继承 ApplicationEventPublisher接口 ,支持事件机制
继承 HierarchicalBeanFactory 载入多个(有继承关系)上下文 ,使得每一个上下文都专注于一个特定的层次,比如应用的web层。


BeanFactroy 延迟加载 Bean ,只有在使用某个Bean时(调用getBean 方法 ),才对该Bean进行实例化。
ApplicationContext 在容器启动时,一次性创建所有Bean。可以今早发现配置问题,有利于检查所依赖属性是否注入。 
当Bean较多时,启动较慢。


BeanFactory通常以编程的方式创建
BeanFactory和ApplicationContext都支持BeanPostProcessor 和 BeanFactoryPostProcessor ,
但两者的区别是:BeanFactory需要手动注册,ApplicationContext则是自动注册。

上一篇     下一篇
为何要定投指数基金

spring5事件机制

红黑树要点整理

jvm在线诊断工具greys

.profile 与 .bash_profile

spring5配置属性读取机制