Я пытаюсь сопоставить исключения из моих контроллеров отдыха с ответами, которые имеют тело, и сделать это в центральном месте.
Я пробовал это:
@Order(Ordered.HIGHEST_PRECEDENCE)
@ControllerAdvice
public class RestErrorResponseExceptionHandler extends ResponseEntityExceptionHandler {
@Override
protected ResponseEntity<Object> handleExceptionInternal(
Exception ex, Object body, HttpHeaders headers, HttpStatus status, WebRequest request) {
super.handleExceptionInternal(ex, body, headers, status, request);
return ResponseEntity.status(status).body(Error.from(status));
}
}
Проблема в том, что обработчик никогда не запускается.
Если я определяю пользовательский метод с @ExceptionHandler
в моих остальных контроллерахили расширить что-то, что имеет @ExceptionHandler
, тогда все работает хорошо, но это приводит к некоторому плохому дизайну.
Насколько я понимаю, Spring сначала попытается найти в контроллере методы обработки исключений, а затем проверит зарегистрированные обработчики.
Я пытаюсь проверить поведение через WebMvcTest, и ответы, которые я получаю, не являются объектами Error, которые я ожидаю.
Есть что-то, что я пропускаю?