SpringBoot 配置文件加載優先級


我們一般在開發的時候,會將application.yml或者application.properties文件放在resources目錄下,然后根據不同的環境加載不同的profile,比如以下的目錄結構:

resources
├─ application.yml
├─ application-test.yml
├─ application-dev.yml
├─ application-prod.yml
└─ log4j2-spring.xml

 

其中,我們可以在application.yml里面使用以下的配置來激活對應的profile(你暫時可以理解帶后綴的配置文件例如-test.yml,它被稱之為profile):

spring:
  profiles:
    active: dev

當我們在application.yml中使用以上的配置時,application-dev.yml將會生效,但此時仍舊有一個問題,那就是我們如何在不修改jar包的情況下對這些配置文件進行更改?或者更確切的來說,我們如何將這些文件放在jar包以外,好讓我們在更改配置的時候無需重新打包?

 

SpringBoot默認會根據以下的順序優先級來加載配置文件:

  1. 將這些配置存放在當前jar包的config目錄(文件夾)下(也就是一個目錄下既包含我們的jar包,也包含跟jar包同級目錄的config目錄下的配置文件)。
  2. 將這些配置存放在當前jar包平級的目錄(文件夾)下(也就是一個目錄下既包含我們的jar包,也包含我們的配置文件)
  3. 在jar包內(也就是classpath)的config目錄下,在打包之前對應resources/config這個目錄。
  4. 最后才是jar包內的根目錄,也就是resources目錄下,我們一般生成SpringBoot項目時,默認的會創建一個application.properties。

 

看文字或許你不太明白,比如我們有一個app.jar是我們最終打包出來的應用程序那么:

./
├─ app.jar
├─ application.yml
└─ config
  └─application.yml

 

當我們運行如下的命令啟動我們的app.jar時,你認為哪一個配置文件會生效呢?

java -jar app.jar

答案是config/application.yml的文件會生效,同樣的,在application.yml內激活的profile也遵循這個優先規則,另外可以參考一下我之前的一篇文章:https://www.cnblogs.com/xingxueliao/p/7113651.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM