栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java、spring boot、spring cloud 退出时执行代码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java、spring boot、spring cloud 退出时执行代码

JVM级别捕获退出信号,并在退出时执行处理代码

JVM提供了信号处理接口SignalHandler来处理进程接收到的信号,比如Ctrl+C和kill命令

实现一个信号处理接口

@Slf4j
public class ShutDownSignalHandler implements SignalHandler {
    // 旧的处理方法
    private SignalHandler oldHandler;
    
    // 注册信号给当前处理器
    public SignalHandler install(String signalName) {
        Signal diagSignal = new Signal(signalName);
        ShutDownSignalHandler instance = new ShutDownSignalHandler();
        instance.oldHandler = Signal.handle(diagSignal, instance);
        return instance;
    }
    
    public void install() {
        install("TERM"); // Ctrl+C
        install("INT"); // kill命令
    }

    @Override
    public void handle(Signal sig) {
        try{
            // 处理逻辑,可以根据Signal来判断信号类型
        } finally {
            // 执行这个就退出了
            oldHandler.handle(sig);
        }
    }
    
    public static void main(String[] args) {
        install();
    }
}

当我们需要在应用退出时执行一些代码就可以写在handle方法的try里面;由于是JVM级别拦截,该方法适用于任意java程序,不限于spring boot、spring cloud。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1007991.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号