与所有应用共享配置
根据所采用的方法不同,在所有应用之间共享配置的方式也有所不同,具体如下所述:
基于文件的仓库
对于基于文件的仓库(git、svn 和 native),文件名为 application*
的资源(application.properties
、application.yml
、application-*.properties
等)在所有客户端应用之间共享。你可以使用这些文件名的资源来配置全局默认值,并在必要时通过特定于应用的配置文件进行覆盖。
属性覆盖 功能也可用于设置全局默认值,允许应用使用占位符在本地覆盖它们。
使用“native” profile(本地文件系统后端)时,应使用一个明确的搜索位置,该位置不属于服务本身的配置。否则,默认搜索位置中的 application* 资源会被移除,因为它们是服务端的一部分。 |
Vault 服务端
使用 Vault 作为后端时,可以通过将配置放在 secret/application
中来与所有应用共享配置。例如,如果运行以下 Vault 命令,所有使用 Config Server 的应用都将可以使用属性 foo
和 baz
$ vault write secret/application foo=bar baz=bam
CredHub 服务端
使用 CredHub 作为后端时,可以通过将配置放在 /application/
中,或通过将其放在应用的 default
profile 中来与所有应用共享配置。例如,如果运行以下 CredHub 命令,所有使用 Config Server 的应用都将可以使用属性 shared.color1
和 shared.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 仓库进行设置和配置管理的详细示例。