1. 程式人生 > >【SpringBoot學習之路】07.Springboot配置檔案詳解(三)

【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指定的預設屬性