这里主要是使用org.springframework:spring-beans:5.2.0.RELEASE进行分析
一. DefaultListableBeanFactory
- XmlBeanFactory继承DefaultListableBeanFactory,DefaultListableBeanFactory是整个bean加载的核心部分,是Spring注册及加载bean的默认实现,而XmlBeanFactory中使用自定义的XML读取器XmlBeanDefinitionReader,实现了BeanDefinitionReader读取
-
DefaultListableBeanFactory继承了AbstractAutowireCapableBeanFactory并实现了ConfigurableListableBeanFactory以及BeanDefinitionRegistry接口。
-
我们展示一下DefaultListableBeanFactory的类图
- 接下来我们将类图上的类的作用都解释一下
类名 | 作用 |
---|---|
AliasRegistry(接口) | 定义对alias的简单增删改查等操作 |
SimpleAliasRegistry(类) | 主要使用map作为alias的缓存,并对接口AliasRegistry进行实现 |
SingletonBeanRegistry(接口) | 定义对单例的注册及获取 |
BeanFactory(接口) | 定义获取bean及bean的各种属性 |
DefaultSingletonBeanRegistry(类) | 对接口SingletonBeanRegistry各函数的实现 |
HierarchicalBeanFactory(接口) | 继承BeanFactory,也就是在BeanFactory定义的功能的基础上增加了对parentFactory的支持 |
BeanDefinitionRegistry(接口) | 定义对BeanDefinition的各种增删改操作 |
FactoryBeanRegistrySupport(类) | 在DefaultSingletonBeanRegistry的基础上增加了对FactoryBean的特殊处理功能 |
ConfigurableBeanFactory(接口) | 提供配置Factory的各种方法 |
ListableBeanFactory(接口) | 根据各种条件获取bean的配置清单 |
AbstractBeanFactory(类) | 综合FactoryBeanRegistrySupport和ConfigurableBeanFactory的功能 |
AutowireCapableBeanFactory(接口) | 提供创建bean、自动注入,初始化以及应用bean的后处理器 |
AbstractAutowireCapableBeanFactory(类) | 综合AbstractBeanFactory并对接口AutowireCapableBeanFactory进行实现 |
ConfigurableListableBeanFactory | BeanFactory配置清单,指定忽略类型及接口等 |
DefaultListableBeanFactory | 综合上面所有功能,主要是对Bean注册后的处理 |
- XmlBeanFactory对DefaultListableBeanFactory进行了扩展,主要用于从XML文档中读取BeanDefinition,对于注册及获取Bean都是使用从父类DefaultListableBeanFactory继承的方法去实现,而唯独与父类不同的个性化实现就是增加了XmlBeanDefinitionReader类型的reader属性。在XmlBeanFactory中主要使用reader属性对资源文件进行读取和注册。
二. XmlBeanDefinitionReader
- 我们看一下XmlBeanDefinitionReader的类图
7.XML配置文件的读取时Spring的重要功能,因为Spring的大部分功能都是以配置作为切入点的
类名 | 作用 |
---|---|
BeanDefinitionReader | 主要定义资源文件读取并转换为BeanDefinition的各个功能 |
EnvironmentCapable | 定义获取Environment方法 |
AbstractBeanDefinitionReader | 对EnvironmentCapable、BeanDefinitionReader类定义的功能进行实现 |