Spring Cloud 官方文檔:https://cloud.spring.io/spring-cloud-static/spring-cloud.htmlhtml
一個Spring Cloud的操做是經過建立「bootstrap」context開始的,它是main application最上層的parent context。開箱機用,它負責載入來自於外部的配置信息(properties),同時在本地解碼外部配置文件的properties。全部Spring應用程序都是由2個Context共享來自外部properties的環境Environment。 Bootstrap properties在被加載時具備最高的優先權,因此默認狀況下bootstrap properties不會被本地配置覆蓋。git
bootstrap context 使用不一樣的方式定位外部配置信息,而不是像main application context那樣,因此你可使用bootstrap.yml 代替 application.yml or application.properties, 最好將外部配置交給bootstrap,並與main context分開。spring
若是你的application在server端有任何特殊的配置,最好是將spring.application.name設置到bootstrap.yml內,由於bootstrap.yml 不會被本地配置所覆蓋。
你也徹底能夠經過設置系統屬性(system properties)spring.cloud.bootstrap.enabled=false, 來禁用bootstrap process。
bootstrap
bootstrap.yml 和application.yml 均可以用來配置參數服務器
bootstrap.yml能夠理解成系統級別的一些參數配置,這些參數通常是不會變更的app
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的以前。server
例如,當使用Spring Cloud時,一般從服務器加載「real」配置數據。爲了獲取URL(和其餘鏈接配置,如密碼等),您須要一個較早的或「bootstrap」配置。所以,您將配置服務器屬性放在bootstrap.yml中,該屬性用於加載實際配置數據(一般覆蓋application.yml [若是存在]中的內容)。htm
固然,在一些狀況上不用那麼區分這兩個文件,你只須要使用application文件便可,把所有選項都寫在這裏,效果基本是一致的,在不考慮上面的加載順序覆蓋的問題上。
文檔