Java Spring RestTemplate getForObject在对多个请求重用后包含重复的头
我用 在我的每一次使用中。我在应用程序类中将RestTemplate初始化为:Java Spring RestTemplate getForObject在对多个请求重用后包含重复的头,java,spring,spring-boot,Java,Spring,Spring Boot,我用 在我的每一次使用中。我在应用程序类中将RestTemplate初始化为: @Autowired private RestTemplate restTemplate; 请告诉我这个问题的原因。如果我的操作出错,也请纠正我。尝试用@Component更改@Bean,并告诉我它是否有效。最后我找到了避免重复标题的解决方案: @Bean public RestTemplate restTemplate() { SimpleClientHttpRequestFactory httpReq
@Autowired
private RestTemplate restTemplate;
请告诉我这个问题的原因。如果我的操作出错,也请纠正我。尝试用@Component更改@Bean,并告诉我它是否有效。最后我找到了避免重复标题的解决方案:
@Bean
public RestTemplate restTemplate() {
SimpleClientHttpRequestFactory httpRequestFactory = new SimpleClientHttpRequestFactory();
httpRequestFactory.setConnectTimeout(30 * 1000);
httpRequestFactory.setReadTimeout(30 * 1000);
return new RestTemplate(httpRequestFactory);
}
在我的例子中,原因是在AutowiredRestTemplate中为每个使用此bean的请求注册消息转换器,从而损坏整个应用程序的RestTemplatebean。
由于每个消息转换器都提供自己的“接受”功能,因此每个请求都会复制它(这个错误在spring 5.x中的某个地方被修复,现在只有唯一的接受值被发送到服务器)显示一些日志。据我所知,
@Bean
创建了一个单例
@Bean
public RestTemplate restTemplate() {
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));
return restTemplate;
}