Spring Bean 生命周期
Posted 30rl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Bean 生命周期相关的知识,希望对你有一定的参考价值。
Spring Bean 生命周期
1. Spring Bean 元信息配置阶段
2. Spring Bean 元信息解析阶段
3. Spring Bean 注册阶段
4. Spring BeanDefinition合并阶段
5. Spring Bean Class 加载阶段
6. Spring Bean 实例化前阶段
7. Spring Bean 实例化阶段
8. Spring Bean 实例化后阶段
9. Spring Bean 属性赋值前阶段
10. Spring Bean Aware 接口回调阶段
11. Spring Bean 初始化前阶段
12. Spring Bean 初始化阶段
13. Spring Bean 初始化后阶段
14. Spring Bean 初始化完成阶段
15. Spring Bean 销毁前阶段
16. Spring Bean 销毁阶段
17. Spring Bean 垃圾收集
1. Spring Bean 元信息配置
BeanDefinition 配置
- 面向资源
- XML 配置
- Properties 配置
- 面向注解
- 面向API
2. Spring Bean 元信息解析阶段
- 面向资源BeanDefinition解析
- BeanDefinitionReader
- XML解析器 —— BeanDefinitionParser
- 面向注解 BeanDefinition 解析
- AnnotatedBeanDefinitionReader
3. Spring Bean 注册
- BeanDefinitionRegistry
4. Spring BeanDefinition合并
- 父子BeanDefinition合并
- 当前BeanFactory查找
- 层次性BeanFactory查找
5. Spring Bean Class 加载
- ClassLoader类加载
- Java Security 安全控制
- ConfigurableBeanFactory临时ClassLoader
6. Spring Bean 实例化前阶段(非主流生命周期)
- InstantiationAwareBeanPostProcessor#postProcessBeforeInstantiation
7. Spring Bean 实例化阶段
- 实例化方法
- 传统实例化方法
- 实例化策略 —— InstantiationStrategy
- 构造器依赖注入
- 传统实例化方法
8. Spring Bean 实例化后阶段
- InstantiationAwareBeanPostProcessor#postProcessAfterInstantiation
9. Spring Bean 属性赋值前阶段
- Bean属性值元信息
- PropertiesValues
- Bean属性赋值前回调
- InstantiationAwareBeanPostProcessor#postProcessPropertyValues [Spring 1.2 —— 5.0 版本]
- InstantiationAwareBeanPostProcessor#postProcessProperties [Spring 5.1 版本]
10. Spring Bean Aware 接口回调阶段
- Spring Aware接口
- BeanNameAware [属于BeanFactory Aware 接口回调]
- BeanClassLoaderAware [属于BeanFactory Aware 接口回调]
- BeanFactoryAware [属于BeanFactory Aware 接口回调]
- EnvironmentAware [属于ApplicationContext 接口回调]
- EmbeddedValueResolverAware [属于ApplicationContext 接口回调]
- ResourceLoaderAware [属于ApplicationContext 接口回调]
- ApplicationEventPublisherAware [属于ApplicationContext 接口回调]
- MessageSourceAware [属于ApplicationContext 接口回调]
- ApplicationContextAware [属于ApplicationContext 接口回调]
11. Spring Bean 初始化前阶段
- 此时已完成
- Bean实例化
- Bean属性赋值
- Bean Aware 回调
- 方法回调
- BeanPostProcessor#postProcessBeforeInitialization
12. Spring Bean 初始化阶段
- Bean 初始化 (Initialization)
- @PostConstruct 标注方法
- 实现 InitializingBean 接口的 afterPropertiesSet() 方法
- 自定义初始化方法
13. Spring Bean 初始化后阶段
- 方法回调
- BeanPostProcessor#postProcessAfterInitialization
14. Spring Bean 初始化完成阶段
- SmartInitializingSingleton#afterSingletonsInstantiated [Spring 4.1+版本后提供]
15. Spring Bean 销毁前阶段
- 方法回调
- DestructionAwareBeanPostProcessor#postProcessBeforeDestruction
16. Spring Bean 销毁阶段
- Bean 销毁 (Destory)
- @PreDestory 标注方法
- 实现DisposableBean 接口的 destroy() 方法
- 自定义销毁方法
17. Spring Bean 垃圾收集
- Bean 垃圾回收 (GC)
- 关闭 Spring 容器 (应用上下文)
- 执行GC
- Spring Bean 覆盖的 finalize() 方法被回调
以上是关于Spring Bean 生命周期的主要内容,如果未能解决你的问题,请参考以下文章