天天看點

SpringBoot配置檔案的優先級

Spring Boot支援兩種配置檔案的形式,一種是application.properties,另一種是application.yml。最近在配置過程中遇到了配置檔案優先級的問題,現在來總結一下。

Spring Boot配置檔案

properties和yml的優先級

首先來講一下yml檔案與properties檔案文法上的不同,以設定應用端口為例:

properties檔案示例(application.properties):

server.port=80
           

YAML檔案示例(application.yml):

server:
    port: 80
           

在這裡就不過多對yml的文法進行研究,我們主要進行配置檔案優先級的對比。

假設我們同時存在application.properties和application.yml檔案,并且配置同一個屬性,那麼Spring Boot預設會采用哪個檔案的配置呢?我們來進行測試。

首先來看application.properties檔案的配置:

SpringBoot配置檔案的優先級

然後來看application.yml的配置:

SpringBoot配置檔案的優先級

我們同時在application.properties和application.yml中對應用啟動端口進行了配置,下面我們來看看啟動的結果是怎樣的:

SpringBoot配置檔案的優先級

結論:可見在同一目錄下,properties配置優先級 > YAML配置優先級,是以我們在jar包啟動時帶上properties寫法的配置可以覆寫配置。

工程路徑下各properties檔案的優先級

Spring Boot配置檔案可以放置在多種路徑下,不同路徑下的配置優先級有所不同。

1、file:./config/ (目前項目路徑config目錄下);

2、file:./ (目前項目路徑下);

3、classpath:/config/ (類路徑config目錄下);

4、classpath:/ (類路徑config下)。

以上目錄的優先級由高到底,高優先級的配置會覆寫低優先級的配置;Spring Boot會從這四個位置全部加載配置檔案并進行互補配置。

繼續閱讀