У меня есть приложение Spring 4 с несколькими ControllerAdvices, помеченными @Order (someValue). Кроме того, я обнаружил ControllerAdvice в одной из моих внешних библиотек, также помеченных @Order (someValue).
Насколько я понимаю, когда Controller создает исключение, порядок ControllerAdvices определяет порядок, в котором ControllerAdvices ищет это конкретное исключение. Теперь я думаю, что также возможно, что в моих внешних библиотеках есть другие ControllerAdvices с аннотациями @Order. Однако я не могу загрузить все библиотеки и выполнить поиск всех ControllerAdvices и проверить их значения Order.
Как узнать, какое значение Order следует поместить в конкретный ControllerAdvice, если я хочу его перехватить? исключения перед другими ControllerAdvices? Должен ли я использовать другой подход для моего варианта использования?
См. Код ниже.
Я хочу, чтобы ExceptionHandlerControllerTwo захватывал исключения после ExceptionHandlerControllerOne и до ExceptionHandlerControllerThree.
Я пробовал другой порядокзначения для ExceptionHandlerControllerTwo. Числа с 1 по 90, похоже, ловили исключения так, как я этого хотел. В моих внешних библиотеках могут быть другие ControllerAdvices, о которых я не знаю.
В моем приложении:
@ControllerAdvice
@Order(0)
public class ExceptionHandlerControllerOne {
// multiple @ExceptionHandler methods
}
@ControllerAdvice
@Order(80)
public class ExceptionHandlerControllerTwo {
// multiple @ExceptionHandler methods
}
@ControllerAdvice
@Order(90)
public class ExceptionHandlerControllerThree {
// multiple @ExceptionHandler methods
}
Во внешней библиотеке:
@ControllerAdvice
@Order(100)
@Slf4j
public class CatchAllExceptionHandlerController {
// multiple @ExceptionHandler methods
}