亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Boot 中怎么停止服務

發布時間:2021-08-11 14:41:01 來源:億速云 閱讀:341 作者:Leah 欄目:編程語言

這篇文章給大家介紹Spring Boot 中怎么停止服務,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

方法一
  • Springboot提供的actuator的功能,它可以執行shutdown, health, info

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
# 設置服務的端口號為3300
server.port=3300
        management.endpoint.shutdown.enabled=true
        management.endpoints.web.exposure.include=shutdown

shutdown節點打開,將/actuator/shutdown暴露web訪問也設置上
除了shutdown之外還有health, info的web訪問都打開的話將
配置management.endpoints.web.exposure.include=*即可。

  • 關閉時執行銷毀操作

import javax.annotation.PreDestroy;

public class TerminateBean {
    // 關閉時執行銷毀操作
    @PreDestroy
    public void destroy() {
        System.out.println("TerminalBean is destroyed");
    }
}
  • 自定義Config注冊bean

import com.hqs.springboot.shutdowndemo.bean.TerminateBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ShutDownConfig {
    @Bean
    public TerminateBean getTerminateBean() {
        return new TerminateBean();
    }
}

在啟動類里輸出啟動日志

curl -X POST http://localhost:3300/actuator/shutdown

日志可以輸出啟動時的日志和停止時的日志 Spring Boot 中怎么停止服務

方法二

獲取程序啟動時候的context,然后關閉主程序啟動時的context。這樣程序在關閉的時候也會調用PreDestroy注解。如下方法在程序啟動十秒后進行關閉

/* 
 * method 2: use ctx.close to shutdown all application context
 */
ConfigurableApplicationContext ctx = SpringApplication.run(ShutdowndemoApplication.class, args);
try {
        TimeUnit.SECONDS.sleep(10);
} catch (InterruptedException e) {
        e.printStackTrace();
}
 ctx.close();
方法三

在springboot啟動的時候將進程號寫入一個app.pid文件,生成的路徑是可以指定的,可以通過命令 cat /Users/huangqingshi/app.id | xargs kill 命令直接停止服務,這個時候bean對象的PreDestroy方法也會調用的。這種方法大家使用的比較普遍。寫一個start.sh用于啟動springboot程序,然后寫一個停止程序將服務停止。

/* 
 * method 3 : generate a pid in a specified path, while use command to shutdown pid :
            'cat /Users/huangqingshi/app.pid | xargs kill'
 */
SpringApplication application = new SpringApplication(ShutdowndemoApplication.class);
application.addListeners(new ApplicationPidFileWriter("/Users/huangqingshi/app.pid"));
application.run();
方法四

通過調用一個SpringApplication.exit()方法也可以退出程序,同時將生成一個退出碼,這個退出碼可以傳遞給所有的context。這個就是一個JVM的鉤子,通過調用這個方法的話會把所有PreDestroy的方法執行并停止,并且傳遞給具體的退出碼給所有Context。通過調用System.exit(exitCode)可以將這個錯誤碼也傳給JVM。程序執行完后最后會輸出:Process finished with exit code 0,給JVM一個SIGNAL

/* 
 * method 4: exit this application using static method
 */
ConfigurableApplicationContext ctx = SpringApplication.run(ShutdowndemoApplication.class, args);
exitApplication(ctx);
public static void exitApplication(ConfigurableApplicationContext context) {
        int exitCode = SpringApplication.exit(context, (ExitCodeGenerator) () -> 0);
        System.exit(exitCode);
}

Spring Boot 中怎么停止服務

方法五

自己寫一個Controller,然后將自己寫好的Controller獲取到程序的context,然后調用自己配置的Controller方法退出程序。通過調用自己寫的/shutDownContext方法關閉程序:curl -X POST http://localhost:3333/shutDownContext

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ShutDownController implements ApplicationContextAware {

    private ApplicationContext context;

    @PostMapping("/shutDownContext")
    public String shutDownContext() {
        ConfigurableApplicationContext ctx = (ConfigurableApplicationContext) context;
        ctx.close();
        return "context is shutdown";
    }

    @GetMapping("/")
    public String getIndex() {
        return "OK";
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        context = applicationContext;
    }
}

如何暴力停止呢,簡單,直接kill -9 相應的PID即可。

關于Spring Boot 中怎么停止服務就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邵东县| 台东县| 巴里| 宁化县| 南康市| 安陆市| 肇东市| 时尚| 郧西县| 磐石市| 湖北省| 彰化市| 武义县| 美姑县| 务川| 二连浩特市| 嘉定区| 资溪县| 开平市| 丹棱县| 刚察县| 明星| 松江区| 宝山区| 柏乡县| 开原市| 巴楚县| 喀喇| 石渠县| 盈江县| 南召县| 静安区| 平谷区| 庆阳市| 永兴县| 左云县| 斗六市| 宁都县| 开阳县| 嘉兴市| 凤凰县|