1. 程式人生 > >SpringCloud入門之常用的配置檔案 application.yml和 bootstrap.yml區別

SpringCloud入門之常用的配置檔案 application.yml和 bootstrap.yml區別

轉載https://www.cnblogs.com/BlogNetSpace/p/8469033.html

一、bootstrap.ym(.properties)與application.yml(.properties)執行順序

  • bootstrap.yml(bootstrap.properties)用來程式引導時執行,應用於更加早期配置資訊讀取,如可以使用來配置application.yml中使用到引數等
  • application.yml(application.properties) 應用程式特有配置資訊,可以用來配置後續各個模組中需使用的公共引數等。
  • bootstrap.yml 先於 application.yml 載入

二、典型的應用場景如下:

  • 當使用 Spring Cloud Config Server 的時候,你應該在 bootstrap.yml 裡面指定 spring.application.name 和 spring.cloud.config.server.git.uri
  • 和一些加密/解密的資訊

技術上,bootstrap.yml 是被一個父級的 Spring ApplicationContext 載入的。這個父級的 Spring ApplicationContext是先載入的,在載入application.yml 的 ApplicationContext之前。

為何需要把 config server 的資訊放在 bootstrap.yml 裡?

當使用 Spring Cloud 的時候,配置資訊一般是從 config server 載入的,為了取得配置資訊(比如密碼等),你需要一些提早的或引導配置。因此,把 config server 資訊放在 bootstrap.yml,用來載入真正需要的配置資訊。

三、高階使用場景

啟動上下文

Spring Cloud會建立一個`Bootstrap Context`,作為Spring應用的`Application Context`的父上下文。初始化的時候,`Bootstrap Context`負責從外部源載入配置屬性並解析配置。這兩個上下文共享一個從外部獲取的`Environment`。`Bootstrap`屬性有高優先順序,預設情況下,它們不會被本地配置覆蓋。 `Bootstrap context`和`Application Context`有著不同的約定,所以新增了一個`bootstrap.yml`檔案,而不是使用`application.yml` (或者`application.properties`)。保證`Bootstrap Context`和`Application Context`配置的分離。