У меня есть RestTemplate, где я переопределяю ResponseErrorHandler, как показано в коде ниже
@Bean
public RestTemplate restTemplate() {
RestTemplate restTemplate = new RestTemplate(new BufferingClientHttpRequestFactory(new SimpleClientHttpRequestFactory()));
restTemplate.setErrorHandler(new RsponseError());
return restTemplate;
}
и мой класс ResponseError выглядит так
public class RsponseError implements ResponseErrorHandler{
@Override
public boolean hasError(ClientHttpResponse clientHttpResponse) throws IOException {
log.info("statuscode {}",clientHttpResponse.getStatusCode());
return true;
}
@Override
public void handleError(ClientHttpResponse clientHttpResponse) throws IOException {
log.info("status code {}",clientHttpResponse.getStatusCode());
log.info("status text {}",clientHttpResponse.getStatusText());
}
Если я автоматически подключу RestTemplate и вызову службу отдыха, и генерируется ошибка, ResponseError не работает. Но если я не установлю обработчик ошибок в Конфигурации и установлю его после автопроводки RestTemplate, как показано ниже, класс будет работать.
@Autowired
private RestTemplate restTemplate;
@Override
public ResponseEntity<ClassExampleResponse> invoker(ClassExample classExample,
String uri) throws Exception {
final RequestEntity<ClassExample> requestEntity = new RequestEntity<>(classExample, requestHeader(), HttpMethod.POST, new URI("https://somelink"));
restTemplate.setErrorHandler(new RsponseError());
final ResponseEntity<ClassExampleResponse> responseEntity = restTemplate.exchange(requestEntity, ClassExampleResponse.class);
return responseEntity;
}
Почему restTemplate.setErrorHandler (new RsponseError ()); не работает, если установлено в классе конфигурации? Спасибо за помощь заранее.