Дескриптор Spring-boot NoHandlerException в @ControllerAdvice

Я хочу обработать исключение NoHandlerException в приложении Springboot и вернуть настраиваемое сообщение об ошибке. Я добавил следующее в свой application.properties и попытался переопределить сообщение об ошибке.

spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false

Ошибка не попадает в @ControllerAdvice... Она обрабатывается в defaulthandlerexceptionresolver . Есть идеи?

1 ответ

Решение

Положив @Order(Ordered.HIGHEST_PRECEDENCE)а также @ControllerAdvice в заголовке обработчика исключений это означает:

@ControllerAdvice

Специализация @Component для классов, объявляющих методы @ExceptionHandler, @InitBinder или @ModelAttribute, которые будут совместно использоваться несколькими классами @Controller.

@Порядок

Определяет порядок сортировки аннотированного компонента. Если мы поставим Ordered.HIGHEST_PRECEDENCE, что является полезной константой для максимального значения приоритета.

Код должен выглядеть так:

@Order(Ordered.HIGHEST_PRECEDENCE)
@ControllerAdvice
public class ExceptionsHandler extends ResponseEntityExceptionHandler {
    .....
}

ССЫЛКИ:

Документация по аннотации @ControllerAdvice

Документация по аннотации @Order

Другие вопросы по тегам