Spring源码-0-基础概念导读

Spring源码-0-基础概念导读

简介

用于介绍 Spring 中常见类的说明,及特殊类的重要字段说明。

源码 git 仓库地址

码云地址:https://gitee.com/haohaos/spring-framework/tree/5.1.x/
5.1.x

ApplicationContext 类介绍

在这里插入图片描述
在这里插入图片描述

ClassPathXmlApplicationContext

源码解读
解释绝对路径,将普通路径解释为包含包路径的类资源路径名

AbstractXmlApplicationContext

源码解读
主要功能是用 XmlBeanDefinitionReader 从包含 bean definitions 的 xml 文档中拉取配置。loadBeanDefinitions(DefaultListableBeanFactory beanFactory),loadBeanDefinitions(XmlBeanDefinitionReader reader),Resource[] getConfigResources()

AbstractRefreshableConfigApplicationContext

源码解读
仅继承 AbstractRefreshableApplicationContext,在它的功能上添加了对配置位置的处理,重点关注 private String[] configLocations;

AbstractRefreshableApplicationContext

源码解读
这个实现支持多次调用 refresh(),每次调用都创建一个新的内部 bean factory 实例。protected abstract void loadBeanDefinitions(DefaultListableBeanFactory beanFactory) 用来加载 BeanDefinition

AbstractApplicationContext

源码解读
抽象类,实例化模版方法 refresh() 作为模版实现。

ConfigurableApplicationContext

源码解读
提供配置 application context 的方法,还对 生命周期方法做了封装,但仅能在启动和关闭时被使用。

ApplicationContext

源码导读
BeanFactory,ResourceLoaderAware,ApplicationEventPublisherAware,MessageSourceAware 能力的整合

HierarchicalBeanFactory

源码导读
实现等级制度的一部分

ListableBeanFactory

源码导读
可以枚举通过 bean 工厂实现的所有 bean 实例

BeanFactory

源码解读
Spring bean 容器的根接口

FactoryBean
BeanDefinition
RootBeanDefinition
BeanWrapper
BeanPostProcessor

BeanFactory 类介绍

bean 工厂相关类图

DefaultListableBeanFactory

源码解读
Spring 对 ConfigurableListableBeanFactory 和 BeanDefinitionRegistry 的默认实现:一个基于 bean definition 元数据,可以通过 post-processors 扩展成熟的 bean factory

AbstractAutowireCapableBeanFactory

源码解读
伴随着 RootBeanDefinition class 去创造完整的 bean,需要子类实现 resolveDependency,按照类型去自动注入。注意这个类没有实现 bean definition 注册功能。

ConfigurableListableBeanFactory

源码解读
除了 ConfigurableBeanFactory,还去分析和修改 bean definition , 和预加载单例

AutowireCapableBeanFactory

源码解读
实现自动注入的抽象接口,通过方法 applyBeanPostProcessorsBeforeInitializationapplyBeanPostProcessorsBeforeInitialization 在 bean 初始化前后执行对应的 BeanPostProcessors 返回的类型可能是原始类型也可能是包装器类型。

AbstractBeanFactory

源码解读
为父接口 ConfigurableBeanFactory 提供实现具体的方法及对应的属性,doCreateBean 模版方法的存在位置,bean 生命周期范围的定义,bean definitions 的合并处理者

ConfigurableBeanFactory

源码解读
这个 bean factory 接口不用于通常的 application 代码
对于典型的需求请使用 BeanFactory 或 ListableBeanFactory
这个扩展的接口仅是为了扩展框架内部的插件即插即用
和对 bean factory 配置方法的特殊访问

  • setBeanClassLoader 类加载器
  • setTempClassLoader 临时类加载器
  • setCacheBeanMetadata 设置是否缓存 bean 元数据
  • setBeanExpressionResolver 设置 bean 表达式解析器
  • setConversionService 设置转换服务,用于 bean 属性值的转换
  • addPropertyEditorRegistrar 添加属性编辑注册器
  • setTypeConverter 设置类型转换器
  • addEmbeddedValueResolver 添加嵌入式值解析器
  • addBeanPostProcessor 添加 bean 后置处理器
  • registerScope 注册生命周期

注册器类介绍

AliasRegistry
SimpleAliasRegistry
SingletonBeanRegistry
DefaultSingletonBeanRegistry
FactoryBeanRegistrySupport
BeanDefinitionRegistry

ApplicationContext 和 BeanFactory 对应关系

ApplicationContextBeanFactory
ClassPathXmlApplicationContextXmlBeanDefinitionReader
AbstractXmlApplicationContextDefaultListableBeanFactoryXmlBeanDefinitionReader
AbstractRefreshableConfigApplicationContext
AbstractRefreshableApplicationContextDefaultListableBeanFactory
AbstractApplicationContextConfigurableListableBeanFactory
ApplicationContextAutowireCapableBeanFactory
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值