Sharing Configuration With All Applications

根据你采用的方法,在所有应用程序之间共享配置会有所不同,如下面的主题中所述:

File Based Repositories

对于基于文件的存储库(git、svn 和 native),文件名中包含 application*application.propertiesapplication.ymlapplication-*.properties 等)的资源在所有客户端应用程序之间共享。你可以使用这些文件名的资源来配置全局默认值,并根据需要让应用程序特定的文件来覆盖它们。

property overrides功能还可以用于设置全局默认值,且允许在本地覆盖占位符应用程序。

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

Vault Server

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

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

CredHub Server

在将 CredHub 用作后端时,你可以通过将配置放在 /application/ 中或将其放在应用程序的 default 配置文件中,来与所有应用程序共享配置。例如,如果你运行以下 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 Environment Repository

若要使用 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 仓库进行设置和配置管理的详细示例。