参考资料:
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应用程序相同)。