1. 程式人生 > >SpringBoot之退出服務(exit)時呼叫自定義的銷燬方法

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來啟動執行的話,可能不會執行銷燬的操作。