與所有應用程式共享配置
根據您所採用的方法,所有應用程式之間的配置共享方式有所不同,具體如下所述。
基於檔案的儲存庫
對於基於檔案的(git、svn 和 native)儲存庫,檔名包含 application*(如 application.properties、application.yml、application-*.properties 等)的資源將在所有客戶端應用程式之間共享。您可以使用這些檔名的資源來配置全域性預設值,並在必要時透過特定於應用程式的檔案進行覆蓋。
屬性覆蓋功能也可用於設定全域性預設值,其中允許應用程式在本地覆蓋佔位符。
使用“native”配置檔案(本地檔案系統後端)時,您應該使用一個不屬於伺服器自身配置的顯式搜尋位置。否則,預設搜尋位置中的 application* 資源將被移除,因為它們是伺服器的一部分。 |
Vault 伺服器
當使用 Vault 作為後端時,您可以透過將配置放置在 secret/application 中來與所有應用程式共享配置。例如,如果您執行以下 Vault 命令,所有使用配置伺服器的應用程式都將擁有屬性 foo 和 baz:
$ vault write secret/application foo=bar baz=bam
CredHub 伺服器
當使用 CredHub 作為後端時,您可以透過將配置放置在 /application/ 中或放置在應用程式的 default 配置檔案中來與所有應用程式共享配置。例如,如果您執行以下 CredHub 命令,所有使用配置伺服器的應用程式都將擁有屬性 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 儲存庫進行設定和配置管理的詳細示例。