欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

BeanFactory 和 ApplicationContext的区别

程序员文章站 2022-05-24 12:01:06
...

BeanFactory 是*接口

ApplicationContext 继承或实现于BeanFactory , 都具有生产Bean的能力,但BeanFactory不具备包扫描的能力

ApplicationContext 具有更多的功能,事件发布等,服务非常好

BeanFactory 就是一个无情的生产机器,没有其他服务,只能通过下面的方式去注册Bean定义,生产Bean

DefaultListableBeanFactory defaultListableBeanFactory = new DefaultListableBeanFactory();
defaultListableBeanFactory.registerBeanDefinition();
defaultListableBeanFactory.getBean();

这也是为什么说,BeanFactory 是getBean的时候才创建,而ApplicationContext是在容器启动的时候就已经创建好了Singletonl的Bean

下面的表格是一个不错的总结:

Feature BeanFactory ApplicationContext
Bean Bean实例化/装配 Yes Yes
集成的生命周期管理 No Yes
自动注册 BeanPostProcessor No Yes
自动注册 BeanFactoryPostProcessor No Yes
便利的 MessageSource 访问 (国际化) No Yes
内置ApplicationEvent 发布机制 No Yes