(转)SpringBoot之退出服务(exit)时调用自定义的销毁方法

Posted 人艰不拆_zmc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(转)SpringBoot之退出服务(exit)时调用自定义的销毁方法相关的知识,希望对你有一定的参考价值。

我们在工作中有时候可能会遇到这样场景,需要在退出容器的时候执行某些操作。SpringBoot中有两种方法可以供我们来选择(其实就是spring中我们常用的方式。只是destory-method是在XML中配置的,SpringBoot是去配置化。所以这里就不提这种方式了),一种是实现DisposableBean接口,一种是使用@PreDestroy注解。OK,下面我写两个例子看一下:

DisposableBean接口

我们可以通过实现这个接口来在容器退出的时候执行某些操作。例子如下:
package com.zkn.learnspringboot.destory;  
  
import org.springframework.beans.factory.DisposableBean;  
import org.springframework.boot.ExitCodeGenerator;  
import org.springframework.stereotype.Component;  
  
/** 
 * Created by zkn on 2016/8/14. 
 */  
@Component  
public class TestImplDisposableBean implements DisposableBean, ExitCodeGenerator {  
  
    @Override  
    public void destroy() throws Exception {  
  
        System.out.println("<<<<<<<<<<<我被销毁了......................>>>>>>>>>>>>>>>");  
        System.out.println("<<<<<<<<<<<我被销毁了......................>>>>>>>>>>>>>>>");  
    }  
  
    @Override  
    public int getExitCode() {  
  
        return 5;  
    }  
}  
@PreDestroy注解
我们可以在需要的类的方法上添加这个注解,同样可以满足我们的需求。
package com.zkn.learnspringboot.destory;  
  
import org.springframework.stereotype.Component;  
import javax.annotation.PreDestroy;  
  
/** 
 * Created by zkn on 2016/8/14. 
 */  
@Component  
public class TestAnnotationPreDestroy {  
  
    @PreDestroy  
    public void destory() {  
  
        System.out.println("我被销毁了、、、、、我是用的@PreDestory的方式、、、、、、");  
        System.out.println("我被销毁了、、、、、我是用的@PreDestory的方式、、、、、、");  
    }  
}  

输出结果如下:

技术分享图片

TIPS:

退出你可以通过Ide中的功能来退出。这里我启动的时候是在CMD中用jar启动的,启动命令如下:java -jar LearnSpringBoot-0.0.1-SNAPSHOT.jar,所以我在这里退出的时候是用的Ctrl+C来执行的退出操作。如果你用的mvn spring-boot:run来启动运行的话,可能不会执行销毁的操作。
 

 

以上是关于(转)SpringBoot之退出服务(exit)时调用自定义的销毁方法的主要内容,如果未能解决你的问题,请参考以下文章

Linux命令之退出exit

Python全栈开发之常用模块

linux下用ssh登录后如何退出?

C#中WinForm程序退出方法技巧总结(转)

科普:为什么SpringBoot中main方法执行完毕后程序不会直接退出呢

C#中WinForm程序退出方法技巧总结 (转)