【SpringBoot】專案打成 jar 包後關於配置檔案的外部化配置
阿新 • • 發佈:2019-01-10
在未進行任何處理的情況下,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