使用 spring-cloud-config-client 时如何配置自定义 RestTemplate?

How to configure a custom RestTemplate when using spring-cloud-config-client?

我正在尝试使用 spring-cloud-config-client 在启动时从 spring-cloud-config-server 应用程序读取我的配置属性。 我的应用程序是一个 Spring-Boot 应用程序,我需要做的是在将请求发送到配置服务器之前将特定的 header 添加到请求中。

我已阅读文档 (http://cloud.spring.io/spring-cloud-config/spring-cloud-config.html),但我找不到任何方法来使用提供的 RestTemplate 自定义 ConfigServicePropertySourceLocator。

最好的方法是什么?

非常感谢

有一个ConfigServicePropertySourceLocator.setRestTemplate()。在你的配置中 class 添加一个 @PostConstruct 方法,你可以在那里设置你的 RestTemplate

扩展@spencergibb 的回答。

  • 创建配置class。

    @Configuration
    @ConditionalOnClass({ConfigServicePropertySourceLocator.class, RestTemplate.class})
    public class ConfigClientBootstrapConfiguration {
    
        private final ConfigServicePropertySourceLocator locator;
    
        @Autowired
        public ConfigClientBootstrapConfiguration(ConfigServicePropertySourceLocator locator) {
            this.locator = locator;
        }
    
        @PostConstruct
        public void init() {
            RestTemplate restTemplate = new RestTemplate();
            locator.setRestTemplate(restTemplate);
        }
    
    }
    
  • 在子目录 resources/META-INF

    中创建一个 bootstrap.factories
    # Bootstrap components
    org.springframework.cloud.bootstrap.BootstrapConfiguration=\
    path.to.config.ConfigClientBootstrapConfiguration