0.背景
idea中建立好springboot項目後,預設的配置檔案是放在resource目錄下的,這個時候進行打包,配置檔案會打包到jar中,每次更新配置資訊都需要重新打jar包部署,比較麻煩.
目的:将配置檔案分離,其他位置存放好配置檔案後,在啟動jar時指定配置檔案,實作靈活切換
1.預設的配置檔案
1.1 application.properties
SpringBoot程式預設從
application.properties
或者
application.yaml
讀取配置,且application.properties>application.yaml
外置配置檔案
Spring程式會按優先級從下面這些路徑來加載application.properties配置檔案
- 目前目錄下的/config目錄
- 目前目錄
- classpath裡的/config目錄
- classpath 跟目錄
eg:在jar所在目錄建立config檔案夾,然後放入配置檔案,或者直接放在配置檔案在jar目錄.
1.2 application-xx.properties
不同環境設定一個配置檔案,帶 application-
字首都會識别成預設的.
eg:application-dev.properties、application-prod.properties
1.3 啟動指令
java -jar xx.jar --spring.profiles.active=dev
複制
1.4 擴充
1.你也可以直接在application.properties中指定使用哪一個檔案
spring.profiles.active = dev
複制
啟動時,會自動根據填寫的參數值,讀取對應的配置檔案進行加載.

2.如果圖裡application.properties檔案和日志檔案也想外置?
- 把application.properties也放到config目錄裡去
- 在application.properties檔案或使用的環境properties檔案中指明志配置檔案路徑
#### 日志配置檔案路徑
logging.config=./config/log4j2.xml
複制
2.自定義的配置檔案
2.1 啟動時指定
多個配置檔案用英文逗号分隔
# 需要在classpath目錄中
java -jar xxx.jar --spring.config.location=classpath:/自定義配置檔案1.properties,classpath:/自定義配置檔案2.properties
# 絕對路徑指定
java -jar xxx.jar --Dspring.config.location=絕對路徑\自定義配置檔案3.properties
複制
2.2 代碼中指定
2.2.1 在application.properties檔案中指定一個檔案路徑
eg:路徑配置如下,目前項目config下的path.properties
xx.pathConfig.path = ./config/path.properties
複制
2.2.2 編寫加載類
這樣啟動時就會先加載出application.properties中
${xx.pathConfig.path}
的值,然後加載出這個定義的配置檔案.
隻要修改application.properties中配置的自定義檔案路徑,就可以切換到不同的配置檔案.
package xx.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
/**
* @Description: 請求詳細位址的配置檔案: xx-path.properties
* @Class: PathConfig
* @Author: Yiang37
* @Date: 2021/7/15 10:00
* @Version: 1.0
*/
// @PropertySource("classpath:/xx.properties")這種是classpath相對路徑
// file指明實際路徑.
@PropertySource(value = {"file:${xx.pathConfig.path}"}, encoding="utf-8")
@Configuration
public class PathConfig {
}
複制
2.2.3 啟動指令
java -jar xx.jar --spring.profiles.active=dev
複制