与所有应用共享配置

根据所采用的方法不同,在所有应用之间共享配置的方式也有所不同,具体如下所述:

基于文件的仓库

对于基于文件的仓库(git、svn 和 native),文件名为 application* 的资源(application.propertiesapplication.ymlapplication-*.properties 等)在所有客户端应用之间共享。你可以使用这些文件名的资源来配置全局默认值,并在必要时通过特定于应用的配置文件进行覆盖。

属性覆盖 功能也可用于设置全局默认值,允许应用使用占位符在本地覆盖它们。

使用“native” profile(本地文件系统后端)时,应使用一个明确的搜索位置,该位置不属于服务本身的配置。否则,默认搜索位置中的 application* 资源会被移除,因为它们是服务端的一部分。

Vault 服务端

使用 Vault 作为后端时,可以通过将配置放在 secret/application 中来与所有应用共享配置。例如,如果运行以下 Vault 命令,所有使用 Config Server 的应用都将可以使用属性 foobaz

$ vault write secret/application foo=bar baz=bam

CredHub 服务端

使用 CredHub 作为后端时,可以通过将配置放在 /application/ 中,或通过将其放在应用的 default profile 中来与所有应用共享配置。例如,如果运行以下 CredHub 命令,所有使用 Config Server 的应用都将可以使用属性 shared.color1shared.color2

credhub set --name "/application/profile/master/shared" --type=json
value: {"shared.color1": "blue", "shared.color": "red"}
credhub set --name "/my-app/default/master/more-shared" --type=json
value: {"shared.word1": "hello", "shared.word2": "world"}

JDBC 环境仓库

要使用 JDBC 后端共享配置,请在数据库中插入记录,其中应用程序列的值为 'application',用于那些打算在所有客户端之间共享的条目。特定于应用的属性可以覆盖这些共享配置,从而为你的应用环境提供灵活性和控制。

INSERT INTO PROPERTIES (APPLICATION, PROFILE, LABEL, KEY, VALUE)
VALUES ('application', 'default', 'master', 'a.b.c', 'shared-value');
INSERT INTO PROPERTIES (APPLICATION, PROFILE, LABEL, KEY, VALUE)
VALUES ('myapp', 'prod', 'master', 'd.e.f', 'specific-value');

请参阅 JdbcEnvironmentRepository 实现及其相关测试,以获取有关使用 JDBC 仓库进行设置和配置管理的详细示例。