码迷,mamicode.com
首页 > 编程语言 > 详细

Spring Bean 生命周期

时间:2020-06-07 21:25:26      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:for   ssl   span   ring   values   environ   env   ota   uri   

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 生命周期

标签:for   ssl   span   ring   values   environ   env   ota   uri   

原文地址:https://www.cnblogs.com/30rl/p/13056688.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!