【spring】源码解析之 DefaultListableBeanFactory 和 XmlBeanDefinitionReader

本文详细介绍了Spring框架中的DefaultListableBeanFactory类。它是BeanFactory接口的一种实现,支持Bean的自动装配、列表操作及配置管理等功能。文章还解释了XmlBeanDefinitionReader如何通过多个组件协调工作来加载BeanDefinition。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DefaultListableBeanFactory是什么,相信看下图就能一目了然 它的整体类图如下

输入图片说明

其中

BeanFactory是Spring的最根的接口,类的工厂接口 1.HierarchicalBeanFactory接口是在继承BeanFactory的基础上,实现BeanFactory的父子关系。 1.AutowireCapableBeanFactory接口是在继承BeanFactory的基础上,实现Bean的自动装配功能 1.ListableBeanFactory接口是在继承BeanFactory的基础上,实现Bean的list集合操作功能

  1. ConfigurableBeanFactory接口是在继承HierarchicalBeanFactory的基础上,实现BeanFactory的全部配置管理功能、

  2. SingletonBeanRegistry是单例bean的注册接口

  3. ConfigurableListableBeanFactory接口是继承AutowireCapableBeanFactory,ListableBeanFactory,ConfigurableBeanFactory三个接口的一个综合接口

  4. AliasRegistry接口是别名注册接口,SimpleAliasRegistry类是简单的实现别名注册接口的类。

  5. DefaultSingletonBeanRegistry是默认的实现SingletonBeanRegistry接口的类,同时,继承类SimpleAliasRegistry 。

  6. FactoryBeanRegistrySupport是实现FactoryBean注册的功能实现。继承类DefaultSingletonBeanRegistry

  7. AbstractBeanFactory是部分实现接口ConfigurableBeanFactory,并继承类FactoryBeanRegistrySupport

  8. DefaultListableBeanFactory其实要实现的功能就是以list集合的方式操作bean

XmlBeanDefinitionReader 输入图片说明 XmlBeanDefinitionReader并不是xml配置的真正解析者,它只是相当于一个指挥官。当它收到一条需要加载BeanDefinition对象的任务后,它只会协调手下去完成相应的工作,它的手下有:

  1. ResourceLoader,它把指定的配置文件地址封装成Resource对象。

  2. DocumentLoader,它把Resource对象中的XML文件内容转换为Document对象。默认使用DocumentLoader的实现类DefaultDocumentLoader来加载Document对象。

  3. BeanDefinitionDocumentReader,它把Document对象中包含的配置信息转换成BeanDefinition对象并把它注册到BeanDefintionRegistry对象中。默认使用DefaultBeanDefinitionDocumentReader来操作Document对象。在DefaultBeanDefinitionDocumentReader的实现中,它的责任是遍历xml根节点下的子节点,并把处理bean标签和自定义命名空间的标签(比如aop:,context:,p:等)的细节委托给BeanDefinitionParserDelegate对象,BeanDefinitionParserDelegate才是真正解析配置文件的地方。

  4. NamespaceHandlerResolver,用于获取非默认命名空间的处理器,默认是DefaultNamespaceHandlerResolver对象。它虽然由XmlBeanDefinitionReader提供,但真正的使用者是BeanDefinitionParserDelegate类。

转载于:https://my.oschina.net/wangjunBlog/blog/1818340

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值