SpringCloud 復(fù)合環(huán)境Repositories

2023-07-31 09:12 更新

在某些情況下,您可能希望從多個環(huán)境存儲庫中提取配置數(shù)據(jù)。為此,您可以在配置服務(wù)器的應(yīng)用程序?qū)傩曰験AML文件中啟用composite配置文件。例如,如果要從Subversion存儲庫以及兩個Git存儲庫中提取配置數(shù)據(jù),則可以為配置服務(wù)器設(shè)置以下屬性:

spring:
  profiles:
    active: composite
  cloud:
    config:
      server:
        composite:
        -
          type: svn
          uri: file:///path/to/svn/repo
        -
          type: git
          uri: file:///path/to/rex/git/repo
        -
          type: git
          uri: file:///path/to/walter/git/repo

使用此配置,優(yōu)先級由composite鍵下的存儲庫列出順序確定。在上面的示例中,首先列出了Subversion存儲庫,因此在Subversion存儲庫中找到的值將覆蓋在一個Git存儲庫中為同一屬性找到的值。在rex Git存儲庫中找到的值將在walter Git存儲庫中為相同屬性找到的值之前使用。

如果只想從每種不同類型的存儲庫中提取配置數(shù)據(jù),則可以在配置服務(wù)器的應(yīng)用程序?qū)傩曰験AML文件中啟用相應(yīng)的配置文件,而不啟用composite配置文件。例如,如果要從單個Git存儲庫和單個HashiCorp Vault服務(wù)器中提取配置數(shù)據(jù),則可以為配置服務(wù)器設(shè)置以下屬性:

spring:
  profiles:
    active: git, vault
  cloud:
    config:
      server:
        git:
          uri: file:///path/to/git/repo
          order: 2
        vault:
          host: 127.0.0.1
          port: 8200
          order: 1

使用此配置,可以通過order屬性確定優(yōu)先級。您可以使用order屬性為所有存儲庫指定優(yōu)先級順序。order屬性的數(shù)值越低,優(yōu)先級越高。存儲庫的優(yōu)先級順序有助于解決包含相同屬性值的存儲庫之間的任何潛在沖突。

如果您的復(fù)合環(huán)境包括上一個示例中的Vault服務(wù)器,則在對配置服務(wù)器的每個請求中都必須包含Vault令牌。請參閱Vault后端。

從環(huán)境存儲庫中檢索值時,任何類型的故障都會導(dǎo)致整個組合環(huán)境的故障。
使用復(fù)合環(huán)境時,所有存儲庫都包含相同的標(biāo)簽很重要。如果您的環(huán)境與前面的示例中的環(huán)境類似,并且您請求帶有master標(biāo)簽的配置數(shù)據(jù),但是Subversion存儲庫不包含名為master的分支,則整個請求將失敗。

定制復(fù)合環(huán)境Repositories

除了使用Spring Cloud中的一個環(huán)境存儲庫之外,您還可以提供自己的EnvironmentRepository bean作為復(fù)合環(huán)境的一部分。為此,您的bean必須實現(xiàn)EnvironmentRepository接口。如果要在復(fù)合環(huán)境中控制自定義EnvironmentRepository的優(yōu)先級,則還應(yīng)該實現(xiàn)Ordered接口并覆蓋getOrdered方法。如果未實現(xiàn)Ordered接口,則EnvironmentRepository的優(yōu)先級最低。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號