Spring源码 - 核心类DefaultListableBeanFactory & XmlBeanDefinitionReader

# Spring源码 - 核心类

Spring版本:Spring 5.3.13-release


# 1、核心类DefaultListableBeanFactory

DefaultListableBeanFactorySpring整个Bean加载的核心部分,是Spring注册以及加载Bean的默认实现。DefaultListableBeanFactory继承了AbstractAutowireCapableBeanFactory并实现了ConfigurableListableBeanFactory以及BeanDefinitionRegistry接口。

DefaultListableBeanFactory类图:

在这里插入图片描述

每个类的作用:

  • AliasRegistry接口:定义管理alias的通用接口,对aliases的增删改等操作。
  • SimpleAliasRegistry类:主要使用map作为alias的缓存,并对接口AliasRegistry进行实现。
  • SingletonBeanRegistry接口:定义对于单实例Bean的注册以及获取。
  • BeanFactory接口:定义获取Bean以及Bean的各种属性,是SpringIOC的思想的实现接口之一。
  • BeanDefinitionRegistry接口:定义对于BeanDefinition的各种增删改查操作,与之关联的有BeanDefinitionRegistryPostProcessor接口。
  • DefaultSingletonBeanRegistry类:对接口SingletonBeanRegistry的实现。
  • HierarchicalBeanFactory接口:是BeanFactory的子接口,在BeanFactory的基础功能上提供对parentBeanFactory的拓展。
  • ListableBeanFactory接口:是BeanFactory的子接口,在BeanFactory的基础功能上提供根据各种条件获取Bean的配置清单。
  • FactoryBeanRegistrySupport抽象类:继承DefaultSingletonBeanRegistry类,在其基础上提供对FactoryBean<T>的特殊处理功能。
  • ConfigurableBeanFactory接口:继承SingletonBeanRegistryHierarchicalBeanFactory接口。提供配置BeanFactory的各种方法。
  • AbstractBeanFactory抽象类:综合FactoryBeanRegistrySupportConfigurableBeanFactory的功能。
  • AutowireCapableBeanFactory接口:继承BeanFactory接口,在BeanFactory的基础功能上提供对创建Bean、自动注入、初始化、Bean的后置处理器(增强器)。
  • AbstractAutowireCapableBeanFactory抽象类:继承AbstractBeanFactory并实现AutowireCapableBeanFactory
  • ConfigurableListableBeanFactory接口:BeanFactory配置清单,指定忽略类型及接口等。
  • DefaultListableBeanFactory:综合上面所有功能,实现对Bean注册后的一些列处理。

# 2、核心类XmlBeanDefinitionReader

XML配置文件方式读取BeanDefinitionSpring中的重要功能之一。

  • ResourceLoader接口:定义SpringXML配置文件加载器,通过指定的XML配置文件的location将配置文件加载为对应的Resource
  • BeanDefinitionReader接口:提供从XML配置文件中读取BeanDefintion的各种功能。
  • EnvironmentCapable接口:提供获取Environment环境的功能。
  • AbstractBeanDefinitionReader抽象类:实现BeanDefinitionReaderEnvironmentCapable,对两者的功能进行具体的抽象实现。
  • DocumentLoader接口:提供将读取XML配置文件获取的Resource转换为Document的功能。
  • BeanDefinitionDocumentReader接口:将从SpringXMl配置文件中读取的BeanDefinitionDocument转换为BeanDefinition并进行注册。
  • BeanDefinitionParserDelegate类:定义解析DocumentElement的各种方法。

GitHub源码地址https://github.com/kapbc/kapcb-spring-source/tree/master/Spring-Framework-v5.3.13

备注:此文为笔者学习Spring源码的笔记,鉴于本人技术有限,文中难免出现一些错误,感谢大家批评指正。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值