spring 的 BeanFactory 和 ApplicationContext

本文探讨了Spring中的BeanFactory接口和ApplicationContext接口的区别与联系。BeanFactory作为基础接口,负责bean的管理和配置,而ApplicationContext则在此基础上增加了环境、国际化、资源和事件等服务,提供更全面的功能。通过分析源码,揭示了ApplicationContext如何通过组合和委托实现bean管理,并对Message服务的处理方式进行了揭秘。
摘要由CSDN通过智能技术生成

欢迎访问我的 GitHub

  • 文中涉及的 spring 版本号为 4.1.8.RELEASE;

BeanFactory 接口

  • 在 spring 容器中,BeanFactory 接口是 IOC 容器要实现的最基础的接口,定义了管理 bean 的最基本的方法,例如获取实例、基本的判断等,如下图:

  • BeanFactory 有多个子接口来进一步扩展 bean 相关的功能,以下两个与本文有直接关系,需要关注:

  • HierarchicalBeanFactory:beanFactory 可以设置 ParentBeanFactory,这个接口的两个方法都是和 ParentBeanFactory 相关的,getParentBeanFactory 方法返回 ParentBeanFactory,containsLocalBean 方法是相对 containsBean 方法而言的,containsBean 方法找不到 bean 的时候会通过 ParentBeanFactory 去找,而 containsLocalBean 只在当前 beanFactory 找

ApplicationContext 接口

  • 关于 ApplicationContext 和 BeanFactory 的关系,看类图即可一目了然:

  • 原来 ApplicationContext 继承了 HierarchicalBeanFactory 和 ListableBeanFactory,也就是说前面看到的接口特性都被 ApplicationContext 继承下来了,另外通过类图可以发现,ApplicationContext 还继承了诸如 Environment、Resource、Message、Event

  • 等相关的接口,也就是说 除了 bean 的管理配置相关的能力,ApplicationContext 还拥有了 Environment(环境)、MessageSource(国际化)、ResourceLoader(资源)、ApplicationEventPublisher(应用事件)等服务相关的接口,简单的说 ApplicationContext 是以 bean 管理为基础的综合能力扩展,用于满足业务对 Spring 综合能力的需要;

  • 再看看 ApplicationContext 源码,除了继承,它自身也提供了一些扩展的能力:</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值