spring-cloud-config-server——Environment Repository
參考資料:
https://cloud.spring.io/spring-cloud-static/spring-cloud-config/1.4.0.RELEASE/single/spring-cloud-config.html
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應用程序相同)。
spring-cloud-config-server——Environment Repository