我的应用程序与不同的其余端点进行接口,并且每个端点都需要一个专门的RestTemplate对象。我正在使用RestTemplateBuilder创建每个RestTemplate对象。可以克隆Spring Boot提供的RestTemplateBuilder对象并进行更改吗?
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
在这里,我将单例生成器bean注入到这两个bean方法中。我试图克服的问题是同一构建器对象的变异。在我的示例中,我的第二个rest模板不需要基本授权,但是我无意中得到了它。
答案 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;