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檔案,由外部配置向內部配置進行查詢
外部配置檔案必須與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