Spring Bean的生命周期(钩子函数)

借鉴:https://www.cnblogs.com/liweimingbk/p/17843970.html
https://blog.csdn.net/lxz352907839/article/details/128634404

一、Spring Bean生命周期

在这里插入图片描述
如果Spring配置文件中所定义的Bean类实现了ApplicationContextAware 接口,那么在加载Spring配置文件时,会自动调用ApplicationContextAware 接口中的setApplicationContext,自动的将ApplicationContext注入进来。

二:Bean 实例加载阶段

1、BeanFactory 容器类型

钩子执行顺序与博文顺序一致,即 1->n

1)、@PostConstruct
2)、InitializingBean
3)、init-method
4)、@PreDestroy
5)、DisposableBean
6)、destroy-method

2、ApplicationContext 容器类型

1)、AbstractApplicationContext#initPropertySources
2)、AbstractApplicationContext 其他可被子类重写的方法
3)、BeanNameAware
4)、BeanClassLoaderAware
5)、ApplicationContextAware
6)、其他类型 Aware
7)、AbstractApplicationContext#postProcessBeanFactory
8)、执行注册的 BeanFactoryPostProcessor#postProcessBeanDefinitionRegistry
9)、AbstractApplicationContext#onRefresh
10)、广播 earlyApplicationEvents(容器启动就发布的事件)
11)、配置 Converter<S, T>
12)、初始化 bean 之前执行 BeanPostProcessor#postProcessBeforeInitialization
9)、@PostConstruct
10)、InitializingBean
11)、init-method
12)、初始化 bean 后执行 BeanPostProcessor#postProcessAfterInitialization
12)、程序执行中触发的 ApplicationListener
8)、@PreDestroy
9)、DisposableBean
10)、destroy-method

使用 ApplicationContext.registerShutdownHook() 关闭钩子,让销毁回调函数自动触发

三:Spring框架预留的钩子函数(接口)和方法

spring详细加载全过程如下:

调用 BeanNameAware 的 setBeanName 方法
调用 BeanFactoryAware 的 setBeanFactory 方法
调用 ApplicationContextAware 的 setApplicationContext
调用 InitializingBean 的 afterPropertiesSet 或者没有实现这个接口,但指定了@Bean(initMethod=“不加括号的方法名”),会执行这个方法
调用 BeanPostProcessor 的 postProcessBeforeInitialization 方法
调用 BeanPostProcessor 的 postProcessAfterInitialization 方法
Bean 初始化完成,可以被使用
容器关闭前,调用 DisposableBean 的 destroy 方法

相关推荐

  1. vue钩子函数生命周期

    2024-01-04 10:44:11       13 阅读
  2. springbean生命周期

    2024-01-04 10:44:11       19 阅读
  3. Vue生命周期钩子函数详解

    2024-01-04 10:44:11       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-04 10:44:11       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-04 10:44:11       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-04 10:44:11       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-04 10:44:11       20 阅读

热门阅读

  1. 敏捷管理工具推荐

    2024-01-04 10:44:11       34 阅读
  2. 1月3日,每日信息差

    2024-01-04 10:44:11       36 阅读
  3. 11.使用递归求一个整数的每一位并且求和

    2024-01-04 10:44:11       34 阅读
  4. 学习Vue 02-20 使用v-if实现条件渲染

    2024-01-04 10:44:11       32 阅读
  5. 构建支付系统:从宏观架构到微观实现

    2024-01-04 10:44:11       36 阅读
  6. 1432. 走出迷宫的最少步数

    2024-01-04 10:44:11       45 阅读
  7. 二分算法

    2024-01-04 10:44:11       43 阅读
  8. Lumeical Script------Script Prompt 中的两种输出方式

    2024-01-04 10:44:11       40 阅读
  9. [强网杯 2019]随便注

    2024-01-04 10:44:11       38 阅读
  10. 机器学习的算法简单介绍-随机森林算法

    2024-01-04 10:44:11       38 阅读
  11. Flink 任务指标监控

    2024-01-04 10:44:11       40 阅读