1.首先yml和properties文件都是屬于配置文件,功能一樣。主要是區(qū)別于application和bootstrap的加載順序。
Bootstrap.yml(bootstrap.properties)在application.yml(application.properties)之前加載,就像application.yml一樣,但是用于應(yīng)用程序上下文的引導(dǎo)階段。
2.典型場景
1.當(dāng)使用 Spring Cloud Config Server的時候,你應(yīng)該在 bootstrap.yml里面指定 spring.application.name和 spring.cloud.config.server.git.uri
2.一些加密/解密的信息
技術(shù)上,bootstrap.yml由父Spring ApplicationContext加載。父ApplicationContext被加載到使用application.yml的之前。
當(dāng)使用 Spring Cloud 的時候,配置信息一般是從 config server 加載的,為了取得配置信息(比如密碼等),你需要一些提早的或引導(dǎo)配置。因此,把 config server 信息放在 bootstrap.yml,用來加載真正需要的配置信息。
3.屬性覆蓋問題
啟動上下文時,Spring Cloud會創(chuàng)建一個Bootstrap Context,作為Spring應(yīng)用的Application Context的父上下文。初始化的時候,Bootstrap Context負(fù)責(zé)從外部源加載配置屬性并解析配置。這兩個上下文共享一個從外部獲取的Environment。Bootstrap屬性有高優(yōu)先級,默認(rèn)情況下,它們不會被本地配置覆蓋。 Bootstrap context和Application Context有著不同的約定,所以新增了一個bootstrap.yml文件,而不是使用application.yml (或者application.properties)。保證Bootstrap Context和Application Context配置的分離。