我的应用程序与不同的休息端点交互,每个端点都需要一个专门的 RestTemplate 对象。我正在使用 RestTemplateBuilder 创建每个 RestTemplate 对象。克隆 Spring Boot 提供的 RestTemplateBuilder 对象并进行更改是否可以?
@Configuration
public class Config {
@Bean
public RestTemplate googleRestTemplate(RestTemplateBuilder restTemplateBuilder) {
return restTemplateBuilder.basicAuthorization("user", "pwd123").build();
}
@Bean
public RestTemplate twitterRestTemplate(RestTemplateBuilder restTemplateBuilder) {
return restTemplateBuilder.setConnectTimeout(5000).build();
}
}
在这里,我将单例构建器 bean 注入到两个 bean 方法中。我试图克服的问题是同一构建器对象的变异。在我的示例中,我的第二个休息模板不需要基本授权,但我无意中得到了它。
您可以使用区分您的 RestTemplate@Qualifier
注释如下。
@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();
}
}
然后,您可以将控制器中的任何 RestTemplate beans 与这些 @Qualifiers 一起使用。
@Autowired
@Qualifier("googleRestTemplate")
private RestTemplate restTemplate;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)