学习Spring框架底层代码核心代码类的继承和实现关系(I为接口、A为抽象类、C为类)

应用上下文AnnotationConfigApplicationContext

ResourceLoader(I):定义获取资源对象和类加载器的方法

DefaultResourceLoader(C):实现ResourceLoader接口,提供根据资源类型调用对应类型处理的方法

ResourcePatternResolver(I):继承ResourceLoader接口,定义获取资源列表的方法

BeanFactory(I):Bean工厂的顶层接口,定义Bean工厂的多种基础方法,其中包含获取Bean实例的核心方法

HierarchicalBeanFactory(I):继承BeanFactory接口,定义了获取bean工厂的父工厂的方法,扩展了BeanFactory对父工厂的支持

ListableBeanFactory(I):继承BeanFactory接口,定义了获取bean属性或实例列表的方法

MessageSource(I):定义国际化方法

EnvironmentCapable(I):定义获取运行环境信息的方法

ApplicationEventPublisher(I):FunctionalInterface函数式接口,定义发布通知事件的方法

ApplicationContext(I):继承EnvironmentCapable(获取bean运行的环境信息)、ListableBeanFactory(支持以列表的形式获取bean)、HierarchicalBeanFactory(用来获取Bean父工厂的分层结构)、MessageSource(提供对国际化支持的API)、ApplicationEventPublisher(支持给容器中发布事件,完成事件驱动的功能)、ResourcePatternResolver(用来支持对应用中配置文件的解析工作),整合上述接口接口的功能,定义获取容器及其信息的方法

Lifecycle(I):定义控制容器生命周期的方法

AutoCloseable(I):定义销毁容器的方法,JDK1.7后引入,支持IO流自动关闭

Closeable(I):继承AutoCloseable,定义销毁容器的方法(1.7后引入AutoCloseable支持自动)

ConfigurableApplicationContext(I):继承ApplicationContext、Lifecycle、Closeable,定义设置容器信息和操作容器的方法

AbstractApplicationContext(A):继承DefaultResourceLoader,实现ConfigurableApplicationContext,实现了配置容器信息和操作容器的方法

AliasRegistry(I):定义对bean别名的简单增删改等操作

BeanDefinitionRegistry(I):继承AliasRegistry,定义对BeanDefinition的增删改查等操作

GenericApplicationContext(C):继承AbstractApplicationContext,实现BeanDefinitionRegistry,管理默认bean工厂DefaultListableBeanFactory对bean的操作

AnnotationConfigRegistry(I):定义注册bean配置定义和扫描包的方法,支持使用@Configuration向容器中注册的bean配置定义

AnnotationConfigApplicationContext(C):继承GenericApplicationContext,实现AnnotationConfigRegistry,整合bean容器的所有上下文信息,提供构造方法,使用户启动以及管理spring容器更便捷。

默认bean工厂DefaultListableBeanFactory

AliasRegistry(I):定义对bean别名的简单增删改等操作

SimpleAliasRegistry(C):实现AliasRegistry,实现对bean别名的简单增删改等操作

SingletonBeanRegistry(I):定义了与单实例bean注册相关的方法

DefaultSingletonBeanRegistry(A):继承SimpleAliasRegistry,实现SingletonBeanRegistry,实现对单实例bean增删改查的处理,并设置了三级缓存

FactoryBeanRegistrySupport(A):继承DefaultSingletonBeanRegistry,扩展工厂bean注册的支持

BeanFactory(I):Bean工厂的顶层接口,定义Bean工厂的多种基础方法,其中包含获取Bean实例的核心方法

HierarchicalBeanFactory(I):继承BeanFactory接口,定义了获取bean工厂的父工厂的方法,扩展了BeanFactory对父工厂的支持

ConfigurableBeanFactory(I):继承HierarchicalBeanFactory和SingletonBeanRegistry接口,定义配置bean工厂的各种方法

AbstractBeanFactory(A):继承FactoryBeanRegistrySupport,实现ConfigurableBeanFactory,整合FactoryBeanRegistrySupport和ConfigurableBeanFactory的功能,提供获取bean的方法。

AutowireCapableBeanFactory(I):继承BeanFactory,定义bean的增删方法

AbstractAutowireCapableBeanFactory(A):继承AbstractBeanFactory,实现AutowireCapableBeanFactory,提供创建实例化Bean、填充属性的方法

ListableBeanFactory(I):继承BeanFactory接口,定义了获取bean属性或实例列表的方法

ConfigurableListableBeanFactory(I):继承ListableBeanFactory, AutowireCapableBeanFactory, ConfigurableBeanFactory接口,提供分析和修改Bean以及预先实例化的操作接口

BeanDefinitionRegistry(I):继承AliasRegistry,定义对BeanDefinition的增删改查等操作

DefaultListableBeanFactory(C):继承AbstractAutowireCapableBeanFactory,实现ConfigurableListableBeanFactory, BeanDefinitionRegistry, Serializable,默认bean工厂提供了原始的Bean工厂的功能

注解类型Bean定义AnnotatedGenericBeanDefinition

AttributeAccessor(I):定义对bean中元数据访问的抽象接口

BeanMetadataElement(I):定义获取配置”源对象“的接口

BeanDefinition(I):继承AttributeAccessor, BeanMetadataElement,定义bean定义的各种操作

AnnotatedBeanDefinition(I):继承BeanDefinition,注解式的Bean定义AttributeAccessorSupport(A):实现AttributeAccessor, Serializable,实现对bean中元数据访问的方法

BeanMetadataAttributeAccessor(C):继承AttributeAccessorSupport,实现BeanMetadataElement,对bean中元数据访问的抽象类

AbstractBeanDefinition(A):继承BeanMetadataAttributeAccessor,实现BeanDefinition,Cloneable,Bean定义抽象类

GenericBeanDefinition(C):继承AbstractBeanDefinition,bean定义通用类,整合上述接口功能

AnnotatedGenericBeanDefinition(C):继承GenericBeanDefinition,实现AnnotatedBeanDefinition,扩展bean定义支持注解元数据

参考资料:

GitHub - fuzhengwei/small-spring: 🌱《 Spring 手撸专栏》,本专栏以 Spring 源码学习为目的,通过手写简化版 Spring 框架,了解 Spring 核心原理。在手写的过程中会简化 Spring 源码,摘取整体框架中的核心逻辑,简化代码实现过程,保留核心功能,例如:IOC、AOP、Bean生命周期、上下文、作用域、资源处理等内容实现。

Spring系列文章 · 语雀

GitHub - wb02125055/springframework-source-5.1.x: 这是一个注释版的Spring源码分析工程,版本为5.1.x,大部分核心源码都已经添加中文注释,学习Spring源码可以参考,注释会慢慢进一步完善!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值