SpringBoot默認支持properties(.properties)和YAML(.yml .yaml )兩種格式的配置文件
1.加載順序
若application.yml 和bootStrap.yml 在同一目錄下 :bootstrap.yml先加載 application.yml后加載
bootstrap.yml 用於應用程序上下文的引導階段。bootstrap.yml 由父Spring ApplicationContext加載。
父ApplicationContext 被加載到使用 application.yml 的之前。
如果resource
里面同時有application.properties
和 application.yml
,且存在相同的配置,則application.properties
會覆蓋application.yml
里面的屬性,因為application.properties
會后加載,也就是說哪個文件被最后加載,哪個才具有最高級。(application會覆蓋bootstrap中的非引導配置)
2.配置區別
bootstrap.yml 和application.yml 都可以用來配置參數。
bootstrap.yml 用來程序引導時執行,應用於更加早期配置信息讀取. 可以理解成系統級別的一些參數配置,這些參數一般是不會變動的。
application.yml 可以用來定義應用級別的, 應用程序特有配置信息,可以用來配置后續各個模塊中需使用的公共參數等.如果加載的application.yml的內容標簽與bootstrap的標簽一致,application會覆蓋bootstrap, 而application.yml 里面的內容可以動態替換。
3. 典型的應用場景如下:
- 當使用 Spring Cloud Config Server 的時候,你應該在 bootstrap.yml 里面指定 spring.application.name 和 spring.cloud.config.server.git.uri
- 和一些加密/解密的信息
為何需要把 config server 的信息放在 bootstrap.yml 里?
當使用 Spring Cloud 的時候,配置信息一般是從 config server 加載的,為了取得配置信息(比如密碼等),你需要一些提早的或引導配置。因此,把 config server 信息放在 bootstrap.yml,用來加載真正需要的配置信息。