您的位置:首页 > 编程语言 > Java开发

【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类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Spring