SpringBoot外部化配置

Evan1024發表於2024-03-06

Spring Boot允許外部化專案配置,以便您可以在不同的環境中使用相同的應用程式程式碼。您可以使用各種外部配置源,包括Java屬性檔案、YAML檔案、環境變數和命令列引數。

屬性值可以透過使用@Value註釋直接注入到bean中,透過Spring的環境抽象進行訪問,或者透過@ConfigurationProperties繫結到結構化物件。

SpringBoot從以下位置載入配置,優先順序從高到低,高優先順序的配置覆蓋低優先順序的配置,所有的配置會形成互補配置
1.命令列引數

java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087  --server.context-path=/abc

所有的配置都可以在命令列上進行指定
多個配置用空格分開。 --配置項1=值 --配置項2=值

2.來自java:comp/env的JNDI屬性
3.Java系統屬性(System.getProperties())
4.作業系統環境變數
5.RandomValuePropertySource配置的random.*屬性值
jar外部配置properties或yaml檔案,由外部配置向內部配置進行查詢
image

外部配置檔案必須與jar在同一個目錄。

同時:
優先載入帶profile

6.jar包外部的application-{profile}.properties或application.yml(帶spring.profile)配置檔案

7.jar包內部的application-{profile}.properties或application.yml(帶spring.profile)配置檔案

再來載入不帶profile

8.jar包外部的application.properties或application.yml(不帶spring.profile)配置檔案

9.jar包內部的application.properties或application.yml(不帶spring.profile)配置檔案

10.@Configuration註解類上的@PropertySource

11.透過SpringApplication.setDefaultProperties指定的預設屬性

具體更多的外部化配置,參考官方文件:
https://docs.spring.io/spring-boot/docs/3.0.13/reference/html/features.html#features.external-config

相關文章