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)
相关推荐
lazy H2 分钟前
【计算机网络】第 15 篇:Java BIO、NIO 与高并发网络通信——从 Socket 理解 I/O 模型
网络·后端·tcp/ip·计算机网络·nio·408
呆呆敲代码的小Y11 分钟前
【实战精选面试题】C# 面试题详细解答,按难易程度排序
android·java·游戏·c#·游戏开发·unity面试题·c#面试题
geovindu12 分钟前
rust: Semaphore Pattern
开发语言·后端·设计模式·rust·代理模式·企业级信号量模式·同步型模式
水无痕simon26 分钟前
3、工程重构
java·spring cloud·重构
阿里云基础软件36 分钟前
Agent 任务提速 10.71%,内存占用降低 21.60%|Alibaba Cloud Linux 4 重大发布
java·linux·人工智能·操作系统·agent
Wang's Blog1 小时前
Java 项目实战: 交友项目 - 项目:需求分析与滑动数据设计
java·开发语言·交友
前端 贾公子2 小时前
第 5 章:Codex 从可运行程序到可交付工具
java·前端·数据库
CoderYanger2 小时前
Java EE 进阶:5. Spring IoC&DI(第三弹):Spring DI
java·开发语言·spring boot·spring·面试·java-ee·mvc
Thneonl2 小时前
Claude Code 频繁 Compacting?发布次日我根治了 2 个痛点
后端·rust
一条泥憨鱼2 小时前
【Kafka】零基础学习教程
java·分布式·学习·kafka