第九章-Spring Bean 生命周期

Spring Bean 元信息解析阶段

面向资源 BeanDefinition 解

  • BeanDefinitionReader
  • XML 解析器 - BeanDefinitionParser

面向注解 BeanDefinition 解析

  • AnnotatedBeanDefinitionReader

Spring Bean 注册阶段

BeanDefinition 注册接口

  • BeanDefinitionRegistry

Spring BeanDefinition 合并阶段

BeanDefinition 合并

  • 父子 BeanDefinition 合并
  • 当前 BeanFactory 查找
  • 层次性 BeanFactory 查找

Spring Bean Class 加载阶段

  • ClassLoader 类加载
  • Java Security 安全控制
  • ConfigurableBeanFactory 临时 ClassLoader

Spring Bean 实例化阶段

传统实例化方式

  • 实例化策略 - InstantiationStrategy

构造器依赖注入

Spring Bean 实例化前阶段

非主流生命周期 - Bean 实例化前阶段

  • InstantiationAwareBeanPostProcessor#postProcessBeforeInstantiation

Spring Bean 实例化后阶段

Bean 属性赋值(Populate)判断

  • InstantiationAwareBeanPostProcessor#postProcessAfterInstantiation

Spring Bean Aware 接口回调阶段

Spring Aware 接口

  • BeanNameAware
  • BeanClassLoaderAware
  • BeanFactoryAware
  • EnvironmentAware
  • EmbeddedValueResolverAware
  • ResourceLoaderAware
  • ApplicationEventPublisherAware
  • MessageSourceAware
  • ApplicationContextAware

Spring Bean 初始化前阶段

已完成

  • Bean 实例化
  • Bean 属性赋值
  • Bean Aware 接口回调

方法回调

  • BeanPostProcessor#postProcessBeforeInitialization

Spring Bean 初始化阶段

Bean 初始化(Initialization) • @PostConstruct 标注方法

  • 实现 InitializingBean 接口的 afterPropertiesSet() 方法
  • 自定义初始化方法

Spring Bean 初始化后阶段

方法回调

  • BeanPostProcessor#postProcessAfterInitialization

Spring Bean 销毁前阶段

方法回调

  • DestructionAwareBeanPostProcessor#postProcessBeforeDestruction

Spring Bean 销毁阶段

  • Bean 销毁(Destroy) • @PreDestroy 标注方法
  • 实现 DisposableBean 接口的 destroy() 方法
  • 自定义销毁方法

Spring Bean 垃圾收集

  • Bean 垃圾回收(GC) • 关闭 Spring 容器(应用上下文)
  • 执行 GC
  • Spring Bean 覆盖的 finalize() 方法被回调
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页