【spring】源码解析之 DefaultListableBeanFactory 和 XmlBeanDefinitionReader
2018-05-24 22:52
801 查看
DefaultListableBeanFactory是什么,相信看下图就能一目了然
它的整体类图如下
其中
BeanFactory是Spring的最根的接口,类的工厂接口
1.HierarchicalBeanFactory接口是在继承BeanFactory的基础上,实现BeanFactory的父子关系。
1.AutowireCapableBeanFactory接口是在继承BeanFactory的基础上,实现Bean的自动装配功能
1.ListableBeanFactory接口是在继承BeanFactory的基础上,实现Bean的list集合操作功能
ConfigurableBeanFactory接口是在继承HierarchicalBeanFactory的基础上,实现BeanFactory的全部配置管理功能、
SingletonBeanRegistry是单例bean的注册接口
ConfigurableListableBeanFactory接口是继承AutowireCapableBeanFactory,ListableBeanFactory,ConfigurableBeanFactory三个接口的一个综合接口
AliasRegistry接口是别名注册接口,SimpleAliasRegistry类是简单的实现别名注册接口的类。
DefaultSingletonBeanRegistry是默认的实现SingletonBeanRegistry接口的类,同时,继承类SimpleAliasRegistry 。
FactoryBeanRegistrySupport是实现FactoryBean注册的功能实现。继承类DefaultSingletonBeanRegistry
AbstractBeanFactory是部分实现接口ConfigurableBeanFactory,并继承类FactoryBeanRegistrySupport
DefaultListableBeanFactory其实要实现的功能就是以list集合的方式操作bean
XmlBeanDefinitionReader
XmlBeanDefinitionReader并不是xml配置的真正解析者,它只是相当于一个指挥官。当它收到一条需要加载BeanDefinition对象的任务后,它只会协调手下去完成相应的工作,它的手下有:
ResourceLoader,它把指定的配置文件地址封装成Resource对象。
DocumentLoader,它把Resource对象中的XML文件内容转换为Document对象。默认使用DocumentLoader的实现类DefaultDocumentLoader来加载Document对象。
BeanDefinitionDocumentReader,它把Document对象中包含的配置信息转换成BeanDefinition对象并把它注册到BeanDefintionRegistry对象中。默认使用DefaultBeanDefinitionDocumentReader来操作Document对象。在DefaultBeanDefinitionDocumentReader的实现中,它的责任是遍历xml根节点下的子节点,并把处理bean标签和自定义命名空间的标签(比如aop:,context:,p:等)的细节委托给BeanDefinitionParserDelegate对象,BeanDefinitionParserDelegate才是真正解析配置文件的地方。
NamespaceHandlerResolver,用于获取非默认命名空间的处理器,默认是DefaultNamespaceHandlerResolver对象。它虽然由XmlBeanDefinitionReader提供,但真正的使用者是BeanDefinitionParserDelegate类。
它的整体类图如下
其中
BeanFactory是Spring的最根的接口,类的工厂接口
1.HierarchicalBeanFactory接口是在继承BeanFactory的基础上,实现BeanFactory的父子关系。
1.AutowireCapableBeanFactory接口是在继承BeanFactory的基础上,实现Bean的自动装配功能
1.ListableBeanFactory接口是在继承BeanFactory的基础上,实现Bean的list集合操作功能
ConfigurableBeanFactory接口是在继承HierarchicalBeanFactory的基础上,实现BeanFactory的全部配置管理功能、
SingletonBeanRegistry是单例bean的注册接口
ConfigurableListableBeanFactory接口是继承AutowireCapableBeanFactory,ListableBeanFactory,ConfigurableBeanFactory三个接口的一个综合接口
AliasRegistry接口是别名注册接口,SimpleAliasRegistry类是简单的实现别名注册接口的类。
DefaultSingletonBeanRegistry是默认的实现SingletonBeanRegistry接口的类,同时,继承类SimpleAliasRegistry 。
FactoryBeanRegistrySupport是实现FactoryBean注册的功能实现。继承类DefaultSingletonBeanRegistry
AbstractBeanFactory是部分实现接口ConfigurableBeanFactory,并继承类FactoryBeanRegistrySupport
DefaultListableBeanFactory其实要实现的功能就是以list集合的方式操作bean
XmlBeanDefinitionReader
XmlBeanDefinitionReader并不是xml配置的真正解析者,它只是相当于一个指挥官。当它收到一条需要加载BeanDefinition对象的任务后,它只会协调手下去完成相应的工作,它的手下有:
ResourceLoader,它把指定的配置文件地址封装成Resource对象。
DocumentLoader,它把Resource对象中的XML文件内容转换为Document对象。默认使用DocumentLoader的实现类DefaultDocumentLoader来加载Document对象。
BeanDefinitionDocumentReader,它把Document对象中包含的配置信息转换成BeanDefinition对象并把它注册到BeanDefintionRegistry对象中。默认使用DefaultBeanDefinitionDocumentReader来操作Document对象。在DefaultBeanDefinitionDocumentReader的实现中,它的责任是遍历xml根节点下的子节点,并把处理bean标签和自定义命名空间的标签(比如aop:,context:,p:等)的细节委托给BeanDefinitionParserDelegate对象,BeanDefinitionParserDelegate才是真正解析配置文件的地方。
NamespaceHandlerResolver,用于获取非默认命名空间的处理器,默认是DefaultNamespaceHandlerResolver对象。它虽然由XmlBeanDefinitionReader提供,但真正的使用者是BeanDefinitionParserDelegate类。
相关文章推荐
- spring4.0 源码分析 DefaultListableBeanFactory和XmlBeanDefinitionReader(二)
- 解析Spring源码(4)--XmlBeanDefinitionReader
- 解析Spring源码(9)--XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this);
- 源码解析 DefaultListableBeanFactory
- spring源码之XmlBeanDefinitionReader与bean的注册
- spring beans源码解读之 ioc容器之始祖--DefaultListableBeanFactory
- Spring源码阅读-DefaultListableBeanFactory的属性注释翻译
- spring 源码解读与设计详解:4 DefaultListableBeanFactory及资源载入
- Spring源码解析 - ListableBeanFactory
- 分析spring源码第一篇:DefaultListableBeanFactory
- 1、spring 源码第一篇DefaultListableBeanFactory
- spring beans源码解读之 ioc容器之始祖--DefaultListableBeanFactory
- XmlBeanDefinitionReader-----Spring源码解析 配置文件装载与解析
- 解析Spring源码(3)---XmlBeanDefinitionReader(1)
- Spring源码解析 - ListableBeanFactory
- spring beans源码解读之 ioc容器之始祖--DefaultListableBeanFactory
- Spring源码学习-1.IOC-DefaultListableBeanFactory
- Spring源码入门——XmlBeanDefinitionReader解析
- Spring源码解析——start from BeanFactory(一)
- Spring源码解析之DefaultListableBeanFactory