參考資料:
http://cloud.spring.io/spring-cloud-static/Camden.SR7/#_environment_repository
Environment Repository——環境庫
你要在哪裡儲存Config Server的配置資料呢?管理這種行為的策略是為Enviroment物件提供服務的EnvironmentRepository
。這個Enviroment是Spring Environment域的一個淺層副本(包括propertySources作為主要功能)。Environment資源由三個變數引數化:
- {application} maps to "spring.application.name" on the client side;——{application}對映到客戶端的"spring.application.name";
- {profile} maps to "spring.profiles.active" on the client (comma separated list);——{profile}對映到客戶端的 "spring.profiles.active"(逗號分割列表);
- {label} which is a server side feature labelling a "versioned" set of config files.——{label}是服務端功能,標記"版本化"的配置檔案集。
版本庫實現通常像Spring Boot應用程式一樣從“spring.config.name”載入配置檔案,等同於{application}引數,而“spring.profiles.active”等同於{profiles}引數。配置檔案的優先順序規則也與常規的Boot應用程式中的規則相同:活動配置檔案優先於預設配置,並且如果有多個配置檔案,則最後一個配置檔案將勝出(如向Map新增條目)。
例如,客戶端應用程式具有此引導配置:
bootstrap.yml
spring:
application:
name: foo
profiles:
active: dev,mysql
(通常使用Spring Boot應用程式,這些屬性也可以設定為環境變數或命令列引數)
如果儲存庫是基於檔案的,則伺服器將從application.yml(所有客戶端之間共享)和foo.yml(以yoo.yml優先)建立一個Environment。如果YAML檔案中有指向Spring配置檔案的文件,那麼這些檔案將以更高的優先順序(按列出的配置檔案的順序)應用,如果有特定於配置檔案的YAML(或屬性)檔案,則這些檔案的優先順序高於預設值。較高的優先順序轉換為Environment之前列出的PropertySource.(這些規則於獨立的Spring Boot應用程式相同)。