環境儲存庫
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 中。這些屬性會用作應用程式初始化的一部分。 |