RestTemplateBuilder bean

时间:2018-06-26 16:42:35

标签: spring-mvc spring-boot resttemplate

我的应用程序与不同的其余端点进行接口,并且每个端点都需要一个专门的RestTemplate对象。我正在使用RestTemplateBuilder创建每个RestTemplate对象。可以克隆Spring Boot提供的RestTemplateBuilder对象并进行更改吗?

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

在这里,我将单例生成器bean注入到这两个bean方法中。我试图克服的问题是同一构建器对象的变异。在我的示例中,我的第二个rest模板不需要基本授权,但是我无意中得到了它。

2 个答案:

答案 0 :(得分:0)

您为什么要这么做? 添加bool value = (map.GetValue(key) as bool?).GetValueOrDefault(); 类:

config

@Configuration class Config { @Bean @Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS) RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) { return restTemplateBuilder.build(); } } 内部,它将消耗您的端点:

Controller

答案 1 :(得分:0)

您可以使用@Qualifier注释来区分RestTemplates,如下所示。

@Configuration
public class Config {

  @Bean
  @Qualifier("googleRestTemplate")
  public RestTemplate googleRestTemplate(RestTemplateBuilder restTemplateBuilder) {
    return restTemplateBuilder.basicAuthorization("user", "pwd123").build();
  }

  @Bean
  @Qualifier("twitterRestTemplate")
  public RestTemplate twitterRestTemplate(RestTemplateBuilder restTemplateBuilder) {
    return restTemplateBuilder.setConnectTimeout(5000).build();
  }
}

然后,您可以在控制器中使用这些@Qualifiers中的任何RestTemplate Bean。

@Autowired
@Qualifier("googleRestTemplate")
private RestTemplate restTemplate;