Почему пользовательский обработчик ошибок ошибок не вызывается, когда исключение выдает шаблон отдыха? - PullRequest
1 голос
/ 12 апреля 2019

Я пытаюсь покрыть все остальные вызовы шаблонов в моем классе для обработки исключений.Использование пользовательской обработки исключений с обработчиком ошибок в приложении весенней загрузки.

Для этого я создал bean-компонент шаблона отдыха в config и установил в нем обработчик ошибок для пользовательского класса обработчика ошибок, который я создал с extends DefaultResponseErrorHandler.

public class BaseConfig {
@Bean
    @Primary
    RestTemplate restTemplate(@Autowired RestTemplateBuilder restTemplateBuilder) {
        return restTemplateBuilder.errorHandler(new IPSRestErrorHandler()).build();
    }
}
@Component
public class IPSRestErrorHandler extends DefaultResponseErrorHandler {

    private static final Logger LOGGER = LoggerFactory.getLogger(IPSRestErrorHandler.class);

    @Override
    public void handleError(ClientHttpResponse response) throws IOException {
        if (response.getStatusCode()
                .series() == HttpStatus.Series.SERVER_ERROR) {
            LOGGER.error("Server error with exception code  : "+response.getStatusCode()+" with message : "+response.getStatusText());
            throw ExceptionUtils.newRunTimeException("Server error with exception code  : "+response.getStatusCode()+" with message : "+response.getStatusText());
        } else if (response.getStatusCode()
                .series() == HttpStatus.Series.CLIENT_ERROR) {
            LOGGER.error("Client error with exception code  : "+response.getStatusCode()+" with message : "+response.getStatusText());
            throw ExceptionUtils.newRunTimeException("Client error with exception code  : "+response.getStatusCode()+" with message : "+response.getStatusText());
        } else {
            LOGGER.error("Unknown HttpStatusCode with exception code  : "+response.getStatusCode()+" with message : "+response.getStatusText());
            throw ExceptionUtils.newRunTimeException("Unknown HttpStatusCode with exception code  : "+response.getStatusCode()+" with message :"+response.getStatusText());
        }
    }
}
public class ServicingPlatformSteps {

 @Autowired
    private RestTemplate restTemplate;

 private ResponseEntity callServicingPlatformAPI(RemittanceV2Input inputClass) {
ResponseEntity entity = null;
entity = restTemplate.exchange(builder.build().encode().toUri(),
                    org.springframework.http.HttpMethod.POST, httpEntity, typeRef);
return entity;
}

Здесь я ожидаю, что когда вызывается метод restTemplate.exchange и он выдает какое-то исключение, то должен вызываться мой IPSRestErrorHandler.Но обработчик ошибок не вызывается.Пока я получаю этот экземпляр restTemplate с информацией об обработчике ошибок.

Не могли бы вы мне помочь, почему не вызывается обработчик ошибок?

1 Ответ

0 голосов
/ 14 апреля 2019

В вашем случае замените ниже

@Component
public class IPSRestErrorHandler extends DefaultResponseErrorHandler {

}

с

@Component
public class IPSRestErrorHandler extends ResponseErrorHandler {

}

Пожалуйста, смотрите, ResponseErrorHandler обеспечит чтение HTTP status из response. Таким образом, мы должны extend то же самое.

И вы уже внедрили реализацию IPSRestErrorHandler в экземпляр RestTemplate.

Вы можете прочитать больше здесь , здесь также объясняется, как вы можете проводить модульное тестирование.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...