Spring 核心容器类图

本文介绍了Spring核心容器中的BeanFactory接口及其子类,如ListableBeanFactory、HierarchicalBeanFactory和AutowireCapableBeanFactory,解释了它们在Spring内部的作用。此外,还探讨了ApplicationContext作为高级IOC容器提供的附加服务,如信息源、资源访问和应用事件。接着,文章转向BeanDefinition,它是Spring中描述Bean对象的标准,并提到了BeanDefinitionReader在解析配置文件中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、BeanFactory

Spring Bean 的创建是典型的工厂模式,这一系列的 Bean 工厂,也即 IOC 容器为开发者管理对象
间的依赖关系提供了很多便利和基础服务,类图关系如下:

BeanFactory 作为最顶层的一个接口类,它定义了 IOC 容器的基本功能规范;

子类: ListableBeanFactory, HierarchicalBeanFactor, AutowireCapableBeanFactory

从类图中我们可以发现最终的默认实现类是 DefaultListableBeanFactory,它实现了所有的接口。那为何要定义这么多层次的接口呢?查阅这些接口的源码和说明发现,每个接口都有它使用的场合,它主要是为了区分在 Spring 内部在操作过程中对象的传递和转化过程时,对对象的数据访问所做的限制。

ListableBeanFactory: 接口表示这些 Bean 是可列表化的

HierarchicalBeanFactory:表示的是这些 Bean 是有继承关系的,也就是每个 Bean 有可能有父 Bean

AutowireCapableBeanFactory : 接口定义 Bean 的自动装配规则

要知道工厂是如何产生对象的,我们需要看具体的 IOC 容器实现,Spring 提供了许多 IOC 容器的 实 现 。 比 如GenericApplicationContext , ClasspathXmlApplicationContext 等 。
ApplicationContext 是 Spring 提供的一个高级的 IOC 容器,它除了能够提供 IOC 容器的基本功能
外,还为用户提供了以下的附加服务。从 ApplicationContext 接口的实现,我们看出其特点:
1、支持信息源,可以实现国际化。(实现 MessageSource 接口)
2、访问资源。(实现 ResourcePatternResolver 接口,后面章节会讲到)
3、支持应用事件。(实现 ApplicationEventPublisher 接口)

2、BeanDefinition


统一配置文件的标准: BeanDefinition,Bean 对象在 Spring 实现中是以 BeanDefinition 来描述的,其继承体系如下:

3、BeanDefinitionReader

Bean 的解析过程非常复杂,功能被分的很细,因为这里需要被扩展的地方很多,必须保证有足够的灵活性,以应对可能的变化。Bean 的解析主要就是对 Spring 配置文件的解析。这个解析过程主要通过BeanDefintionReader 来完成,最后看看 Spring 中 BeanDefintionReader 的类结构图:

参考自Tom老师的解读!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值