注: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源码深度解析》