在某些狀況下,您可能須要從客戶端自定義對配置服務器的請求。一般這涉及傳遞特殊的Authorization標頭來對服務器的請求進行身份驗證。要提供自定義RestTemplate,請按照如下步驟操做。 設置spring.cloud.config.enabled=false以禁用現有的配置服務器屬性源。java
使用PropertySourceLocator實現建立一個新的配置bean。spring
CustomConfigServiceBootstrapConfiguration.java @Configuration public class CustomConfigServiceBootstrapConfiguration { @Bean public ConfigClientProperties configClientProperties() { ConfigClientProperties client = new ConfigClientProperties(this.environment); client.setEnabled(false); return client; }bootstrap
@Bean
public ConfigServicePropertySourceLocator configServicePropertySourceLocator() {
ConfigClientProperties clientProperties = configClientProperties();
ConfigServicePropertySourceLocator configServicePropertySourceLocator = new ConfigServicePropertySourceLocator(clientProperties);
configServicePropertySourceLocator.setRestTemplate(customRestTemplate(clientProperties));
return configServicePropertySourceLocator;
}
複製代碼
} 在resources/META-INF中建立一個名爲spring.factories的文件,並指定您的自定義配置。後端
spring.factorties org.springframework.cloud.bootstrap.BootstrapConfiguration = com.my.config.client.CustomConfigServiceBootstrapConfiguration Vault 當使用Vault做爲配置服務器的後端時,客戶端將須要爲服務器提供一個令牌,以從Vault中檢索值。能夠經過在bootstrap.yml中設置spring.cloud.config.token在客戶端中提供此令牌。服務器
bootstrap.yml spring: cloud: config: token: YourVaultToken Vault Vault中的嵌套密鑰 Vault支持將鍵嵌入存儲在Vault中的值。例如app
echo -n '{"appA": {"secret": "appAsecret"}, "bar": "baz"}' | vault write secret/myapp -this
此命令將向您的Vault編寫一個JSON對象。要在Spring中訪問這些值,您將使用傳統的點(。)註釋。例如spa
@Value("${appA.secret}") String name = "World"; 上代碼將name變量設置爲appAsecret。code
對源碼感興趣的朋友能夠加企鵝2147775633