分析BeanFactory和ApplicationContext的区别

  首先,BeanFactory和ApplicationContext都是Spring IOC容器,至于它们的不同点,先结合官方文档进行说明,文档地址:https://docs.spring.io/spring-framework/docs/5.3.24/reference/html/core.html#spring-core。

  在官方文档The IoC Container一节中,对两者有如下描述:

  

   总结一下框起来的红色部分内容:BeanFactory接口提供了一些高级配置的机制来管理对象。而ApplicationContext是BeanFactory的子接口,然后提供以下的特性:

  • 和Spring AOP的整合
  • 消息资源处理(用于国际化)
  • 事件发布
  • 应用级别上下文,类似于WebApplicationContext

  官方文档中已经说得很清楚,ApplicationContext是BeanFactory的子接口,然后在BeanFactory的基础上做了一系列的增强。接下来可以从源码上更进一步观察两者的区别。

  先看一下AbstractApplicationContext#refresh的代码:

  

   AbstractApplicationContext#refresh方法是Spring上下文启动的最关键方法,这里的obtainFreshBeanFactory方法其实就是返回一个DefaultListableBeanFactory。所以AbstractApplicationContext的实现思路也有利用代理模式。

posted @   阳光、大地和诗歌  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示