【SpringBoot學習之路】07.Springboot配置檔案詳解(三)
轉載宣告:商業轉載請聯絡作者獲得授權,非商業轉載請註明出處.原文來自 © 呆萌鍾 【SpringBoot學習之路】07.Springboot配置檔案詳解(三)
Profile多環境支援
Profile是Spring對不同環境提供不同配置功能的支援,可以通過啟用、指定引數等方式快速切換環境
多Profile檔案
- 我們在主配置檔案編寫的時候,檔名可以是 application-{profile}.properties/yml
- 預設使用application.properties的配置;
yml支援多文件塊方式
server: port: 8081 spring: profiles: active: dev #啟用指定配置 --- #三個短橫線分隔多個profiles區 server: port: 8091 spring: profiles: dev --- server: port: 8092 spring: profiles: prod #指定屬於哪個環境 --- server: port: 8080 spring: profiles: default #表示未指定預設配置
啟用指定profile
- 在配置檔案中指定 spring.profiles.active=dev
- 命令列:
- java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
- 可以直接在測試的時候,配置傳入命令列引數
- 虛擬機器引數;
- -Dspring.profiles.active=dev
配置檔案載入位置
springboot 啟動會掃描以下位置的application.properties或者application.yml檔案作為Spring boot的預設配置檔案
- –file:./config/
- –file:./
- –classpath:/config/
- –classpath:/
以上是按照優先順序從高到低的順序,所有位置的檔案都會被載入,高優先順序配置內容會覆蓋低優先順序配置內容。
SpringBoot會從這四個位置全部載入主配置檔案;互補配置;
我們還可以通過spring.config.location來改變預設的配置檔案位置。
專案打包好以後,我們可以使用命令列引數的形式,啟動專案的時候來指定配置檔案的新位置;指定配置檔案和默 認載入的這些配置檔案共同起作用形成互補配置;
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=配置檔案路徑
外部配置載入順序
Spring Boot 支援多種外部配置方式 SpringBoot也可以從以下位置載入配置; 優先順序從高到低;高優先順序的配置覆蓋低優先順序的配置,所有的配置會 形成互補配置
1.命令列引數
- 所有的配置都可以在命令列上進行指定
- java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087 --server.context-path=/abc
- 多個配置用空格分開; --配置項=值
2.來自java:comp/env的JNDI屬性
3.Java系統屬性(System.getProperties())
4.作業系統環境變數
5.RandomValuePropertySource配置的random.*屬性值
由jar包外向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)配置檔案
[email protected]註解類上的@PropertySource
11.通過SpringApplication.setDefaultProperties指定的預設屬性