跳到主要内容

与所有应用程序共享配置

DeepSeek V3 中英对照 Sharing Configuration With All Applications

在所有应用程序之间共享配置的方式会根据您采用的方法而有所不同,具体内容如下:

基于文件的仓库

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

属性覆盖 功能也可以用于设置全局默认值,同时允许应用程序在本地覆盖这些占位符。

提示

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

Vault 服务器

当使用 Vault 作为后端时,你可以通过将配置放在 secret/application 中来与所有应用程序共享配置。例如,如果你运行以下 Vault 命令,所有使用配置服务器的应用程序都将可以使用 foobaz 这两个属性:

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

CredHub 服务器

当使用 CredHub 作为后端时,您可以通过将配置放置在 /application/ 中或将其放置在应用程序的 default 配置文件中来与所有应用程序共享配置。例如,如果您运行以下 CredHub 命令,所有使用配置服务器的应用程序都将可以使用 shared.color1shared.color2 属性:

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

JDBC 环境仓库

要通过 JDBC 后端共享配置,请将记录插入数据库中,并在 application 列中使用 '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');
sql

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