首页 > 解决方案 > 在 @PostConstruct 不触发 ContextClosedEvent 时睡觉

问题描述

从 Spring @Component@PostConstruct如果主线程进入睡眠状态,例如 30 秒。

在两者之间,通过运行触发 SIGTERMkill <pid>

但在这种情况下,既不会触发@PreDestroy,也不会触发EventListeneron 。ContextClosedEvent

例如,当 bean 处于睡眠状态PostConstruct并将 SIGTERM 发送到 spring boot 应用程序时,我们可以监听哪个核心 Spring 事件?

标签: javaspringspring-boot

解决方案


根据评论之一,问题是逻辑太多@PostConstruct

所以您的问题实际上是您在@PostConstruct 中执行了太多工作

换句话说,由于 Spring 仍在初始化自己的过程中,它可能甚至还没有到 if 注册关闭钩子的初始化过程的步骤,所以它甚至从未通知过 SIGTERM


推荐阅读