springboot优雅停止的流程梳理

ContextClosedEvent是Spring框架中的一个标准容器事件,当ApplicationContext被关闭时触发该事件。通过使用ConfigurableApplicationContext接口上的close()方法关闭ApplicationContext时发布。

在此事件触发时,所有单例Bean都会被销毁,封闭的上下文到达生命周期的终点,无法刷新或重新启动。这是Spring容器生命周期中的最后一个事件。

要监听ContextClosedEvent事件,可以实现ApplicationListener接口并重写onApplicationEvent方法,在该方法中判断事件类型并执行相应的处理逻辑。当容器关闭时,监听器中的相应代码就会被执行。

当调用ConfigurableApplicationContext接口的close()方法时,容器会启动关闭流程。在这个流程中,Spring会发布ContextClosedEvent事件,此时监听器会接收到该事件并执行onApplicationEvent方法。随后,容器才会继续执行后续的销毁操作,包括销毁所有单例Bean。

因此,onApplicationEvent方法执行时,容器正处于关闭过程中,但尚未完成所有资源的清理工作。

相关推荐
Hx_Ma1611 小时前
SpringMVC框架提供的转发和重定向
java·开发语言·servlet
期待のcode12 小时前
原子操作类LongAdder
java·开发语言
舟舟亢亢12 小时前
Java集合笔记总结
java·笔记
小酒窝.13 小时前
【多线程】多线程打印ABC
java
乡野码圣13 小时前
【RK3588 Android12】RCU机制
java·jvm·数据库
JAVA+C语言13 小时前
如何优化 Java 多主机通信的性能?
java·开发语言·php
编程彩机14 小时前
互联网大厂Java面试:从分布式架构到大数据场景解析
java·大数据·微服务·spark·kafka·分布式事务·分布式架构
小酒窝.15 小时前
【多线程】多线程打印1~100
java·多线程
君爱学习15 小时前
基于SpringBoot的选课调查系统
java
APIshop15 小时前
Java 实战:调用 item_search_tmall 按关键词搜索天猫商品
java·开发语言·数据库