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 |