Опция 1
Установите debug
уровень ведения журнала для org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
и внимательно просмотрите файл журнала.
Вы должны увидеть что-тонапример:
s.w.s.m.m.a.RequestMappingHandlerMapping : Looking up handler method for path /mypath
s.w.s.m.m.a.RequestMappingHandlerMapping : Returning handler method [public java.util.Map<java.lang.String, java.lang.Object> com.my.something.web.MyController.myHandlerMethod(long)]
до трассировки стека исключений.
Опция 2
Поймать исключение, используя HandlerExceptionResolver
:
Во-первых, нам нужно реализовать HandlerExceptionResolver
:
@Slf4j
public class MethodArgumentTypeMismatchExceptionLoggingExceptionHandler implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
if (ex instanceof MethodArgumentTypeMismatchException) {
MethodArgumentTypeMismatchException e = (MethodArgumentTypeMismatchException)ex;
// Do anything you want with it.
// The method can be accessed using e.getParameter().getExecutable()
log.error("Caught MethodArgumentTypeMismatchException method = {}",
e.getParameter().getExecutable(), e);
}
return null;
}
}
и зарегистрировать его в некотором виде MvcConfig
:
@Configuration
@Slf4j
public class MvcConfig implements WebMvcConfigurer {
@Override
public void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {
resolvers.add(0, new MethodArgumentTypeMismatchExceptionLoggingExceptionHandler());
}
}