Spring Cloud Config—提供自定义RestTemplate

在某些情况下,您可能需要从客户端自定义对配置服务器的请求。通常这涉及传递特殊的Authorization标头来对服务器的请求进行身份验证。要提供自定义RestTemplate,请按照以下步骤操作。

设置spring.cloud.config.enabled=false以禁用现有的配置服务器属性源。

使用PropertySourceLocator实现创建一个新的配置bean。

CustomConfigServiceBootstrapConfiguration.java

@Configuration

public class CustomConfigServiceBootstrapConfiguration {

    @Bean

    public ConfigClientProperties configClientProperties() {

        ConfigClientProperties client = new ConfigClientProperties(this.environment);

        client.setEnabled(false);

        return client;

    }

    @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中的值。例如

echo -n '{"appA": {"secret": "appAsecret"}, "bar": "baz"}' | vault write secret/myapp -

此命令将向您的Vault编写一个JSON对象。要在Spring中访问这些值,您将使用传统的点(。)注释。例如

@Value("${appA.secret}")

String name = "World";

上代码将name变量设置为appAsecret。

源码来源:http://minglisoft.cn/honghu/technology.html

你可能感兴趣的:(Spring Cloud Config—提供自定义RestTemplate)