SpringCloud bootstrap.yml 和application.yml 加載原理


Spring Cloud 官方文檔:https://cloud.spring.io/spring-cloud-static/spring-cloud.html

 

一個Spring Cloud的操作是通過創建“bootstrap”context開始的,它是main application最上層的parent context。開箱機用,它負責載入來自於外部的配置信息(properties),同時在本地解碼外部配置文件的properties。所有Spring應用程序都是由2個Context共享來自外部properties的環境Environment。 Bootstrap properties在被加載時具有最高的優先權,所以默認情況下bootstrap properties不會被本地配置覆蓋。

bootstrap context 使用不同的方式定位外部配置信息,而不是像main application context那樣,所以你可以使用bootstrap.yml 代替 application.yml or application.properties, 最好將外部配置交給bootstrap,並與main context分開。

如果你的application在server端有任何特殊的配置,最好是將spring.application.name設置到bootstrap.yml內,因為bootstrap.yml 不會被本地配置所覆蓋。
你也完全可以通過設置系統屬性(system properties)spring.cloud.bootstrap.enabled=false, 來禁用bootstrap process。

bootstrap.yml  和application.yml  都可以用來配置參數

bootstrap.yml可以理解成系統級別的一些參數配置,這些參數一般是不會變動的

application.yml 可以用來定義應用級別的,如果搭配spring-cloud-config使用 application.yml里面定義的文件可以實現動態替換

Bootstrap.yml(bootstrap.properties)在application.yml(application.properties)之前加載,就像application.yml一樣,但是用於應用程序上下文的引導階段。它通常用於“使用Spring Cloud Config Server時,應在bootstrap.yml中指定spring.application.name和spring.cloud.config.server.git.uri”以及一些加密/解密信息。技術上,bootstrap.yml由父Spring ApplicationContext加載。父ApplicationContext被加載到使用application.yml的之前。

例如,當使用Spring Cloud時,通常從服務器加載“real”配置數據。為了獲取URL(和其他連接配置,如密碼等),您需要一個較早的或“bootstrap”配置。因此,您將配置服務器屬性放在bootstrap.yml中,該屬性用於加載實際配置數據(通常覆蓋application.yml [如果存在]中的內容)。

當然,在一些情況上不用那么區分這兩個文件,你只需要使用application文件即可,把全部選項都寫在這里,效果基本是一致的,在不考慮上面的加載順序覆蓋的問題上。

 


免責聲明!

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



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