環境倉庫
您應該將配置資料儲存在 Config Server 的何處?管理此行為的策略是EnvironmentRepository,它提供Environment物件。此Environment是 Spring Environment領域的一個淺複製(包括propertySources作為主要功能)。Environment資源由三個變數引數化:
-
{application},它對映到客戶端的spring.application.name。 -
{profile},它對映到客戶端的spring.profiles.active(逗號分隔列表)。 -
{label},它是一個伺服器端功能,用於標記“版本化”的配置檔案集。
倉庫實現通常像 Spring Boot 應用程式一樣執行,從spring.config.name等於{application}引數,並且spring.profiles.active等於{profiles}引數的配置中載入配置檔案。配置檔案的優先順序規則也與常規 Spring Boot 應用程式相同:活動配置檔案優先於預設值,如果有多個配置檔案,則最後一個生效(類似於向Map新增條目)。
以下示例客戶端應用程式具有此引導配置:
spring:
application:
name: foo
profiles:
active: dev,mysql
(與 Spring Boot 應用程式一樣,這些屬性也可以透過環境變數或命令列引數設定)。
如果倉庫是基於檔案的,伺服器會從application.yml(所有客戶端共享)和foo.yml(foo.yml優先)建立Environment。如果 YAML 檔案中包含指向 Spring 配置檔案的文件,則這些配置檔案將以更高的優先順序應用(按列出的配置檔案順序)。如果有特定於配置檔案的 YAML(或屬性)檔案,這些檔案也以比預設值更高的優先順序應用。更高的優先順序意味著PropertySource在Environment中列出得更早。(這些規則在獨立的 Spring Boot 應用程式中也適用。)
您可以將spring.cloud.config.server.accept-empty設定為false,這樣如果找不到應用程式,伺服器將返回 HTTP 404 狀態。預設情況下,此標誌設定為true。
您不能將spring.main.*屬性放置在遠端EnvironmentRepository中。這些屬性在應用程式初始化過程中使用。 |