Spring源码 - 核心类DefaultListableBeanFactory & XmlBeanDefinitionReader

# Spring源码 - 核心类

Spring版本:Spring 5.3.13-release


# 1、核心类DefaultListableBeanFactory

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

DefaultListableBeanFactory类图:

Spring源码 - 核心类DefaultListableBeanFactory & XmlBeanDefinitionReader_第1张图片

每个类的作用:

  • 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的特殊处理功能。
  • 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源码的笔记,鉴于本人技术有限,文中难免出现一些错误,感谢大家批评指正。

你可能感兴趣的:(spring源码,spring,java,后端)