環境儲存庫

Config 伺服器的組態資料應儲存在何處? 定義此行為的策略是 EnvironmentRepository,用於提供 Environment 物件。此 Environment 是 Spring Environment 網域的淺層副本 (包括作為主要功能的 propertySources)。Environment 資源透過三個變數進行參數化

  • {application},對應於用戶端上的 spring.application.name

  • {profile},對應於用戶端上的 spring.profiles.active (逗號分隔清單)。

  • {label},這是伺服器端功能,用於標記一組「版本化」的組態檔。

儲存庫實作通常的行為類似於 Spring Boot 應用程式,從與 {application} 參數相等的 spring.config.name 以及與 {profiles} 參數相等的 spring.profiles.active 中載入組態檔。Profile 的優先順序規則也與一般 Spring Boot 應用程式中相同:作用中的 Profile 優先於預設值,並且,如果有多個 Profile,則最後一個獲勝 (類似於將條目新增至 Map)。

以下範例用戶端應用程式具有此 bootstrap 組態

spring:
  application:
    name: foo
  profiles:
    active: dev,mysql

(與 Spring Boot 應用程式的慣例相同,這些屬性也可以透過環境變數或命令列引數設定)。

如果儲存庫是以檔案為基礎,伺服器會從 application.yml (在所有用戶端之間共用) 和 foo.yml (以 foo.yml 優先) 建立 Environment。如果 YAML 檔案在其內部具有指向 Spring Profile 的文件,則這些文件會以更高的優先順序套用 (依列出的 Profile 順序)。如果有 Profile 專用的 YAML (或屬性) 檔案,這些檔案也會以高於預設值的優先順序套用。更高的優先順序會轉化為 Environment 中較早列出的 PropertySource。(這些相同的規則適用於獨立的 Spring Boot 應用程式。)

您可以將 spring.cloud.config.server.accept-empty 設定為 false,以便在找不到應用程式時,伺服器傳回 HTTP 404 狀態。預設情況下,此旗標設定為 true

您無法將 spring.main.* 屬性放置在遠端 EnvironmentRepository 中。這些屬性會用作應用程式初始化的一部分。