一.前言
在第一篇的时候我们就讲过, spring ioc 的实现,主要的有两条实现分支,而 DefaultListableBeanFactory 的实现就是我们的第一个 BeanFactory 主要实现分支.
来看一下 DefaultListableBeanFactory 的类结构:

结合我第一篇做的流程图和 idea 生成的流程图,我们下面会重点讲一下左半部分的接口功能,右边类继承会做个简单的讲述.
二.DefaultListableBeanFactory 的接口架构
从左上角开始分析,可以清晰地看出来,DefaultListableBeanFactory 一共实现了哪些接口的方法,也就可以推断出这个容器具备了哪些功能.
(先不考虑 SingletonBeanRegistry)
- BeanFactory
- HierarchicalBeanFactory
- ListableBeanFactory
- AutowireCapableBeanFactory
- ConfigurableBeanFactory
- ConfigurableListableBeanFactory
- SingletonBeanRegistry
- AliasRegistry
- BeanDefinitionRegistry
前四个我们很熟悉,在上一个篇幅我们已经大体讲述了一下接口具有的功能.那么我们从第五个 ConfigurableBeanFactory 开始讲述.
2.1 ConfigurableBeanFactory
从上面的类结构图中我们可以清晰地看到,
ConfigurableBeanFactory是HierarchicalBeanFactory的子接口, 而HierarchicalBeanFactory再上一遍中也描述过,它使 BeanFactory 具备分层的概念.也就是父子容器.
HierarchicalBeanFactory 中的方法只有获取父容器和判断本地 BeanFactory 是否包含指定 name 的 bean.
而 ConfigurableBeanFactory 是 HierarchicalBeanFactory 的子接口,也就体现出 ConfigurableBeanFactory 是在分层能力上的扩展.
ConfigurableBeanFactory 主要功能:
- 设置父容器
- 添加或查询
BeanPostProcessor,也就是创建 bean 时的前置后置处理器. - 设置类加载器
- 为嵌入值(例如注解属性
@Value(${userName}))添加String 解析器 - 复制给定的其他 BeanFactory 的所有相关配置
- 摧毁 bean 的实例(全部摧毁或摧毁指定 bean)
- 返回指定 bean 所依赖的所有 bean,和返回依赖指定 bean 的所有 bean
- 返回指定范围的所有 b

本文详细解析了Spring的DefaultListableBeanFactory,包括其接口架构如ConfigurableBeanFactory、ConfigurableListableBeanFactory、SingletonBeanRegistry等,以及其实现的BeanFactory核心功能,如单例bean管理、别名注册、BeanDefinition注册等,阐述了DefaultListableBeanFactory如何成为一个完整的BeanFactory。
最低0.47元/天 解锁文章

485

被折叠的 条评论
为什么被折叠?



