环境资源库
您应该将 Config 服务器的配置数据存储在哪里?控制此行为的策略是 EnvironmentRepository
,它提供 Environment
对象。此 Environment
是 Spring Environment
中域的浅拷贝(包括 propertySources
作为主要功能)。Environment
资源由三个变量参数化
-
{application}
,它映射到客户端上的spring.application.name
。 -
{profile}
,它映射到客户端上的spring.profiles.active
(逗号分隔列表)。 -
{label}
,它是服务器端功能,用于标记一组“版本化”的配置文件。
资源库实现通常表现得像一个 Spring Boot 应用程序,从等于 {application}
参数的 spring.config.name
和等于 {profiles}
参数的 spring.profiles.active
加载配置文件。配置文件的优先级规则也与常规 Spring Boot 应用程序相同:活动配置文件优先于默认配置文件,并且如果有多个配置文件,则最后一个配置文件优先(类似于向 Map
添加条目)。
以下示例客户端应用程序具有此引导配置
spring:
application:
name: foo
profiles:
active: dev,mysql
(与 Spring Boot 应用程序一样,这些属性也可以通过环境变量或命令行参数设置)。
如果资源库是基于文件的,则服务器从 application.yml
(在所有客户端之间共享)和 foo.yml
创建一个 Environment
(其中 foo.yml
优先)。如果 YAML 文件中包含指向 Spring 配置文件的文档,则这些文档将以更高的优先级应用(按列出的配置文件的顺序)。如果有特定于配置文件的 YAML(或属性)文件,这些文件也比默认文件具有更高的优先级。更高的优先级转换为 Environment
中较早列出的 PropertySource
。(这些相同的规则适用于独立的 Spring Boot 应用程序)。
您可以将 spring.cloud.config.server.accept-empty
设置为 false
,以便服务器在找不到应用程序时返回 HTTP 404 状态。默认情况下,此标志设置为 true
。
您不能在远程 EnvironmentRepository 中放置 spring.main.* 属性。这些属性用作应用程序初始化的一部分。 |