天天看點

SpringBoot中的配置檔案分離

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           

複制

啟動時,會自動根據填寫的參數值,讀取對應的配置檔案進行加載.

SpringBoot中的配置檔案分離
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           

複制