1. 程式人生 > 其它 >SpringBoot中的配置檔案分離

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 擴充套件

你也可以直接在application.properties中指定使用哪一個檔案

spring.profiles.active = dev

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

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:路徑配置如下

xx.pathConfig.path = D:/Projects/GitWorks/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: 請求詳細地址的配置檔案: icbc-path.properties
 * @Class: PathConfig
 * @Author: Yiang37
 * @Date: 2021/7/15 10:00
 * @Version: 1.0
 */
// file絕對路徑.
// @PropertySource("classpath:/xx.properties")這種是classpath相對路徑
@PropertySource(value = {"file:${xx.pathConfig.path}"}, encoding="utf-8")
@Configuration
public class PathConfig {
}

2.2.3 啟動命令

java -jar xx.jar --spring.profiles.active=dev