Поток Spring Integration - это простой цепной вызов методов Java. Итак, просто посмотрите на это, как вы называете что-то вроде: foo() -> bar() -> baz()
. Таким образом, когда в последнем случае возникает исключение без try...catch
в стеке вызовов, элемент управления возвращается к foo()
и, если есть какая-то логика повторения, он снова вызовет тот же поток.
Я не уверен, какой у вас AnnotationMethodHandlerExceptionResolver
, но похоже, что вы говорите об этом:
Deprecated.
as of Spring 3.2, in favor of ExceptionHandlerExceptionResolver
@Deprecated
public class AnnotationMethodHandlerExceptionResolver
extends AbstractHandlerExceptionResolver
Implementation of the HandlerExceptionResolver interface that handles exceptions through the ExceptionHandler annotation.
This exception resolver is enabled by default in the DispatcherServlet.
Это означает, что вы используете довольно старую Spring. Я не думаю, что это связано, но ваша вершина стека вызовов - Spring MVC. Вам нужно посмотреть, что происходит с повторной попыткой.
И отвечая на все ваши вопросы сразу: да, это нормальное поведение - см. Объяснение вызова Java выше. Вам нужно отладить Spring-код из IDE, чтобы выяснить, что происходит на уровне MVC