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 类介绍
DefaultListableBeanFactory
源码解读
Spring 对 ConfigurableListableBeanFactory 和 BeanDefinitionRegistry 的默认实现:一个基于 bean definition 元数据,可以通过 post-processors 扩展成熟的 bean factory
AbstractAutowireCapableBeanFactory
源码解读
伴随着 RootBeanDefinition class 去创造完整的 bean,需要子类实现 resolveDependency,按照类型去自动注入。注意这个类没有实现 bean definition 注册功能。
ConfigurableListableBeanFactory
源码解读
除了 ConfigurableBeanFactory,还去分析和修改 bean definition , 和预加载单例
AutowireCapableBeanFactory
源码解读
实现自动注入的抽象接口,通过方法 applyBeanPostProcessorsBeforeInitialization
与 applyBeanPostProcessorsBeforeInitialization
在 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 对应关系
ApplicationContext | BeanFactory | |
---|---|---|
ClassPathXmlApplicationContext | XmlBeanDefinitionReader | |
AbstractXmlApplicationContext | DefaultListableBeanFactory | XmlBeanDefinitionReader |
AbstractRefreshableConfigApplicationContext | ||
AbstractRefreshableApplicationContext | DefaultListableBeanFactory | |
AbstractApplicationContext | ConfigurableListableBeanFactory | |
ApplicationContext | AutowireCapableBeanFactory |