你知道如何自動儲存 Spring Boot 應用程式號嗎

lee_lgw發表於2021-09-09

圖片描述

1. 前言

歡迎閱讀 。 PID 對於系統運維來說並不陌生,但是對於一些開發者特別是新手還是要簡單介紹一下的。它是 Process ID 的簡稱,是系統分配給一個程式的唯一識別符號,是各程式的身份識別符號,程式一執行系統就會自動分配給程式一個獨一無二的 PID。程式終止後,PID 被系統回收,可能會被繼續給新執行的程式。俗稱 程式號
PID 是我們進行系統程式管理的重要引數,是重要的運維標識。例如我們常用的 kill -9 <pid>

2. Spring Boot 應用的程式

jpsJava 自帶的檢視 Java 程式的命令,透過這個命令可以檢視當前系統所有執行中的 Java 程式、Java包名、jar 包名及 JVM 引數等。詳細請參考相關 。通常我們會用 jps 來查 Java 應用的程式號。
Spring Boot 應用 作為 Java 應用啟動後自然有一個 PID 程式號。通常我們在啟動後會在 log 中看到它:

   .   ____          _            __ _ _
  /\ / ___'_ __ _ _(_)_ __  __ _    
 ( ( )___ | '_ | '_| | '_ / _` |    
  \/  ___)| |_)| | | | | || (_| |  ) ) ) )
   '  |____| .__|_| |_|_| |___, | / / / /
  =========|_|==============|___/=/_/_/_/
  :: Spring Boot ::        (v2.2.0.RELEASE)
 
 2019-11-20 14:28:00.925  INFO 7828 --- [           main] c.f.s.s.SecurityLearningApplication      : Starting SecurityLearningApplication on DESKTOP-L0IOI2S with PID 7828

當使用多個Spring Boot應用程式時,很難識別Spring Boot應用程式PID,持久化後的 PID 更加方便我們來管理 Spring Boot 應用。

3. Spring Boot 應用 PID 寫入檔案

Spring Boot 提供了在應用程式啟動時將應用程式PID寫入檔案的方法,具體的功能由 ApplicationPidFileWriter 完成 。大致邏輯為:在應用啟動時監聽啟動事件,將 PID 寫入指定的檔案,預設為 application.pid ;預設路徑為當前路徑。如果寫入檔案失敗,將會將 PID 值 寫入系統環境變數屬性 PID_FAIL_ON_WRITE_ERROR (不區分大小寫),或者寫入 Spring 環境變數屬性 spring.pid.fail-on-write-error

3.1 配置 Spring Boot PID 持久化功能

預設情況下 ApplicationPidFileWriter 並沒有自動配置,需要我們自行配置。我們可以在 Spring Boot 入口類中按照下面的模板進行配置註冊監聽器 ApplicationPidFileWriter:

package cn.felord.spring.security;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.ApplicationPidFileWriter;
import org.springframework.cache.annotation.EnableCaching;

/**
 * @author Felordcn
 */
@SpringBootApplication
public class SecurityLearningApplication {

    public static void main(String[] args) {

        SpringApplication springApplication = new SpringApplication(SecurityLearningApplication.class);
        springApplication.addListeners(new ApplicationPidFileWriter());
        springApplication.run(args);
    }

}

做了上述配置後,啟動就會生成 application.pid 檔案,裡面就會有 PID 。有時候可能你要定製檔案的名稱和路徑。你可以透過 Spring Boot 的配置屬性 spring.pid.file 來定製:

 spring:
   pid:
# 將 PID 寫入 /var/run 路徑下的 myApp.pid 檔案中
    file: /var/run/myApp.pid

重新啟動,會在 /var/run 下找到 myApp.pid

4. 總結

今天我們對如何持久化 Spring Boot PID 進行了講解。透過程式設計式的配置,你可以將 Spring Boot 應用的 PID 持久化到檔案中,並且你可以根據需求定製 PID 的儲存檔案。今天就到這裡,如果覺得不錯,請點個贊和轉發支援一下吧。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1020/viewspace-2824465/,如需轉載,請註明出處,否則將追究法律責任。

相關文章