Spring 源码学习笔记之beans整体结构

it2022-05-05  149

注:spring版本5.1.x

一,spring-beans 核心类 DefaultListableBeanFactory

Spring 注册及加载bean 的默认实现

先放一个整体类图

首先看到这个图是有点乱,无从下手,不过最低端可以看到是 DefaultListableBeanFactory

最顶端有三个最基础的类,我简称为最基类,从左向右依次为:

1. AliasRegistry:定义对alias 的简单增删改等操作

       线路一:BeanDefinitionRegistry:定义对BeanDefinition 的各种增删改操作

       线路二:SimpleAliasRegistry:主要使用map 作为alias 的缓存,并对接口AliasRegistry 进行实现

2.SingletonBeanRegistry:定义对单例的注册及获取

      线路一:DefaultSingletonBeanRegistry:对接口SingletonBeanRegistry 各函数的实现

                    FactoryBeanRegistrySupport:增加了对FactoryBean的特殊处理功能。

      线路二:ConfigurableBeanFactory:提供配置Factory 的各种方法

                    AbstractBeanFactory :综合FactoryBeanRegistrySupport 和ConfigurableBeanFactory 的功能

                    

3.BeanFactory:定义获取bean 及bean 的各种属性

    线路一:HierarchicalBeanFactory :在BeanFactory 定义的功能的基础上增加了对parentFactory 的支持。

    线路二:AutowireCapableBeanFactory :提供创建bean 、自动注入、初始化以及应用b巳an 的后处理器。

                 AbstractAutowireCapableBeanFactory :综合AbstractBeanFactory 并对接口AutowireCapableBeanFactory 实现

    线路三:ListableBeanFactory :根据各种条件获取bean 的配置清单方法定义。

                  ConfigurableListableBeanFactory : Beanfactory 配置清单,指定忽略类型及接口等。

 

DefaultListableBeanFactory : 综合上面所有功能, 主要是对bean 注册后的处理。

 

Spring 处理大致流程:

读取配置文件 根据配置文件中的配置找到对应的类的配置,并实例化。 调用实例化后的实例。

 

参考:《Spring源码深度解析》


最新回复(0)