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类。