1. 程式人生 > 其它 >SpringBoot配置檔案——載入順序

SpringBoot配置檔案——載入順序

一、存放目錄

Application屬性檔案,按優先順序排序,位置高的將覆蓋位置
  1. 當前專案目錄下的一個/config子目錄

  2. 當前專案目錄

  3. 專案的resources即一個classpath下的/config包

  4. 專案的resources即classpath根路徑(root)

    如圖:

    目錄

二、讀取順序

如果在不同的目錄中存在多個配置檔案,它的讀取順序是:
1、config/application.properties(專案根目錄中config目錄下)
2、config/application.yml
3、application.properties(專案根目錄下)
4、application.yml
5、resources/config/application.properties(專案resources目錄中config目錄下)
6、resources/config/application.yml
7、resources/application.properties(專案的resources目錄下)
8、resources/application.yml

順序可以通過實驗驗證:

1~8 個位置 分別定義不同的 server 埠號 9001~9008
即可驗證結果順序
注:
1、如果同一個目錄下,有application.yml也有application.properties,預設先讀取application.properties。
2、如果同一個配置屬性,在多個配置檔案都配置了,預設使用第1個讀取到的,後面讀取的不覆蓋前面讀取到的。
3、建立SpringBoot專案時,一般的配置檔案放置在專案的resources目錄下,因為配置檔案的修改,通過熱部署不用重新啟動專案,而熱部署的作用範圍是classpath下

三、配置檔案的生效順序,會對值進行覆蓋

  1. @TestPropertySource 註解
  2. 命令列引數
  3. Java系統屬性(System.getProperties())
  4. 作業系統環境變數
  5. 只有在random.*裡包含的屬性會產生一個RandomValuePropertySource
  6. 在打包的jar外的應用程式配置檔案(application.properties,包含YAML和profile變數)
  7. 在打包的jar內的應用程式配置檔案(application.properties,包含YAML和profile變數)
  8. 在@Configuration類上的@PropertySource註解
  9. 預設屬性(使用SpringApplication.setDefaultProperties指定)

四、配置隨機值

roncoo.secret={random.value} roncoo.number={random.int}
roncoo.bignumber={random.long} roncoo.number.less.than.ten={random.int(10)}
roncoo.number.in.range=${random.int[1024,65536]}

讀取使用註解:@Value(value = "${roncoo.secret}")

注:出現黃點提示,是要提示配置元資料,可以不配置

五、屬性佔位符

當application.properties裡的值被使用時,它們會被存在的Environment過濾,所以你能夠引用先前定義的值(比如,系統屬性)
roncoo.name=www.roncoo.com
roncoo.desc = ${roncoo.name} is a domain name

You can automatically expand properties from the Maven project by using resource filtering. If you use thespring-boot-starter-parent, you can then refer to your Maven ‘project properties’ with@..@placeholders, as shown in the following example:

app.encoding=@project.build.sourceEncoding@
app.java.version=@java.version@

六、其他配置的介紹

    • 埠配置
      server.port=8090
    • 時間格式化
      spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
    • 時區設定
      spring.jackson.time-zone=Asia/Chongqing

本文來自部落格園,作者:三號小玩家,轉載請註明原文連結:https://www.cnblogs.com/q1359720840/p/15772790.html