Spring Boot 核心配置檔案詳解
用過 Spring Boot 的都知道在 Spring Boot 中有以下兩種配置檔案
-
bootstrap (.yml 或者 .properties)
-
application (.yml 或者 .properties)
為什麼會有這兩種配置檔案呢?大家都清楚它們的區別和具體使用場景嗎?
bootstrap/ application 的區別
特意去翻了下 Spring Boot 的官方文件,沒有找到關於這兩種檔案的具體定義,然後再翻了下 Spring Cloud 的官方文件找到了它們的區別。
http://cloud.spring.io/spring-cloud-static/Edgware.SR3/single/spring-cloud.html#thebootstrapapplicationcontext
認真閱讀了下文件,原文大概意思是這樣。
Spring Cloud 構建於 Spring Boot 之上,在 Spring Boot 中有兩種上下文,一種是 bootstrap, 另外一種是 application, bootstrap 是應用程式的父上下文,也就是說 bootstrap 載入優先於 applicaton。bootstrap 主要用於從額外的資源來載入配置資訊,還可以在本地外部配置檔案中解密屬性。這兩個上下文共用一個環境,它是任何Spring應用程式的外部屬性的來源。bootstrap 裡面的屬性會優先載入,它們預設也不能被本地相同配置覆蓋。
因此,對比 application 配置檔案,bootstrap 配置檔案具有以下幾個特性。
-
boostrap 由父 ApplicationContext 載入,比 applicaton 優先載入
-
boostrap 裡面的屬性不能被覆蓋
bootstrap/ application 的應用場景
application 配置檔案這個容易理解,主要用於 Spring Boot 專案的自動化配置。
bootstrap 配置檔案有以下幾個應用場景。
-
使用 Spring Cloud Config 配置中心時,這時需要在 bootstrap 配置檔案中新增連線到配置中心的配置屬性來載入外部配置中心的配置資訊;
-
一些固定的不能被覆蓋的屬性
-
一些加密/解密的場景;
以下這個截圖是一個國外網友問了一個 Spring Cloud 工程師得到的回答。
做過 Spring Cloud 微服務的朋友應該對 bootstrap 的應用十分清楚,我們也有 Spring Cloud 的實戰教程,在 Spring 專題中都能看到。