1. 程式人生 > >【SpringBoot】專案打成 jar 包後關於配置檔案的外部化配置

【SpringBoot】專案打成 jar 包後關於配置檔案的外部化配置

  在未進行任何處理的情況下,SpringBoot 會預設使用專案中的 application.properties 或者 application.yml 來讀取專案所需配置。
  我這裡只記錄幾種自己所用到的。

訪問命令列屬性

  在預設的情況下, SpringApplication 會將任何命令列選項引數(以 - 開頭 --server.port=9000)轉換為 property 並新增到Spring環境當中。
  例如,啟動專案的時候指定埠:

java -jar analysis-speech-tool-0.0.1-SNAPSHOT.jar --server.port=9000

  SpringBoot 使用了一個非常特殊的 PropertySource

命令,目的是為了讓屬性值的重寫按照一定的順序來,而在這個順序當中,命令列屬性總是優先於其他屬性源。
  當然,如果不想將命令列屬性新增到 Spring 環境當中,可以使用以下程式碼來禁用它們。

SpringApplication.setAddCommandLineProperties(false);

應用程式屬性檔案

  SpringApplication 將從 application.properties 以下位置的檔案中載入屬性並且將其新增到 Spring 的環境當中:

  • 當前目錄下的 /config 子目錄
  • 當前目錄
  • classpath中的 /config 目錄
  • classpath根目錄

      該列表按照優先順序的順序排列(在列表中較高的位置定義的屬性將會覆蓋在較低位置定義的屬性)。

      如果您不喜歡 application.properties 作為配置檔名,則可以通過指定 spring.config.name 環境屬性來切換到另一個名稱。還可以使用 spring.config.location 環境屬性(以逗號分隔的目錄位置列表或檔案路徑)引用顯式位置。
      比如:

java -jar myproject.jar --spring.config.name = myproject
java -jar myproject.jar --spring.config.location
= classpath:/default.properties,classpath:/override.properties
java -jar -Dspring.config.location=
D:\speech\default.properties analysis-speech-tool-0.0.1-SNAPSHOT.jar