springboot应用关闭时触发动作

@Component

public class AppShutdownHook {

@PostConstruct

public void register() {

Runtime.getRuntime().addShutdownHook(new Thread(() -> {

System.out.println("JVM 关闭时触发:" + Thread.currentThread().getName());

// 需要进行的操作

}, "app-shutdown-hook"));

}

}

上述方式在如下退出场景下有效:

  1. main 方法执行完毕退出

  2. `System.exit(0)` 主动退出

  3. Linux下 `kill -15`

  4. Ctrl+C 控制台中断

大坑 kill -9是不会触发的,所以务必用kill -15

附kill信号列表:

编号 名称 含义
1 HUP 挂起(很多守护进程用它重载配置)
2 INT 中断(相当于 Ctrl+C)
9 KILL 强制杀死,进程无法捕获或忽略
15 TERM 终止(默认信号,可被捕获/清理)
18 CONT 继续执行
19 STOP 暂停进程(不可捕获)
20 TSTP 终端暂停(相当于 Ctrl+Z)
相关推荐
weixin_460443564 小时前
2026年新修订《网络安全法》实施:Java私有化考试系统如何做好SBOM、漏洞治理与安全升级?
java·开发语言·在线考试系统·企业培训考试系统·宏远培训考试系统·国企培训考试系统·国产化培训系统
子兮曰5 小时前
把 649 种文件格式塞进一个网页里:一个「文件不出浏览器」的预览器
前端·javascript·后端
海鸥-w7 小时前
什么是AOP
java
全栈弄潮儿7 小时前
Python实战第2期: 变量与数据类型
后端·python·agent
Cc.Y7 小时前
Java零基础入门:可变字符串与包装类:StringBuilder、StringBuffer 与 通讯录管理系统实战
java·开发语言·python
paopaokaka_luck8 小时前
基于springboot+vue的智慧家政管理系统(AI问答、 WebSocket实时沟通、ECharts运营分析、订单规则与服务追踪)
java·javascript·spring boot·数据分析·echarts·mybatis
sm_926787058 小时前
RFID 标签打印的技术实现要点与二次开发实践
java·大数据·前端·c++·编辑器
阿森_dev8 小时前
2027 届毕设选题怎么选:30 个 Java 方向选题的实现难度排序
java·开发语言·spring boot·毕业设计·课程设计