|
此版本仍在开发中,目前尚不稳定。如需最新稳定版本,请使用 Spring Cloud Config 5.0.1! |
环境存储库
配置服务器的配置数据应存储在何处?
决定此行为的策略是 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 应用程序一样,这些属性也可以通过环境变量或命令行参数进行设置)。
如果存储库是基于文件的,服务器会从 Environment(在所有客户端之间共享)和 foo.yml(其中 foo.yml 具有更高优先级)创建一个 application.yml。如果 YAML 文件内部包含指向 Spring 配置文件的文档,则这些配置文件将按列出的配置文件顺序以更高优先级应用。如果存在特定于配置文件的 YAML(或属性)文件,它们也将以高于默认值的优先级应用。更高的优先级意味着在 Environment 中更早列出 PropertySource。这些规则同样适用于独立的 Spring Boot 应用程序。)
您可以将 spring.cloud.config.server.accept-empty 设置为 false,以便在应用未找到时,服务器返回 HTTP 404 状态码。默认情况下,此标志设置为 true。
您不能在远程 EnvironmentRepository 中放置 spring.main.* 属性。这些属性用于应用程序初始化过程。 |