java - 在 @PostConstruct 不触发 ContextClosedEvent 时睡觉
问题描述
从 Spring @Component
,@PostConstruct
如果主线程进入睡眠状态,例如 30 秒。
在两者之间,通过运行触发 SIGTERMkill <pid>
但在这种情况下,既不会触发@PreDestroy
,也不会触发EventListener
on 。ContextClosedEvent
例如,当 bean 处于睡眠状态PostConstruct
并将 SIGTERM 发送到 spring boot 应用程序时,我们可以监听哪个核心 Spring 事件?
解决方案
根据评论之一,问题是逻辑太多@PostConstruct
所以您的问题实际上是您在@PostConstruct 中执行了太多工作
换句话说,由于 Spring 仍在初始化自己的过程中,它可能甚至还没有到 if 注册关闭钩子的初始化过程的步骤,所以它甚至从未通知过 SIGTERM
推荐阅读
- data-structures - 如何使用一个简单队列(FIFO)反转一个简单队列(FIFO)?
- java - 如何在 jdk11 中使用 JavaFX?
- python - TypeError: __call__() 得到了一个意外的关键字参数“文本”
- sql - sql server中数值改变精度时如何解决问题
- bash - 计算每列中非空条目的数量,例如 comm 输出
- amazon-s3 - 在 GStreamer 中,我使用“s3src”将 mp4 从 Amazon S3 获取到我的计算机。为什么文件大小发生了变化?
- javascript - 从子文件夹导入动态 Vue
- asp.net-core - 如何读取字符串数据并仅从中获取数字并将其存储在列表中
- c - 重新排序双精度类型数据
- sql - 如何在 SWITCH 语句中设置范围?