BeanFactory 和 ApplicationContext的区别

2020-09-22

BeanFactory 是顶级接口

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

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

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

1
2
3
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
使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章