我目前正在将Spring Boot应用程序从Spring Boot 1.x迁移到Spring Boot2。我遇到以下HandlerInterceptor
问题:
new HandlerInterceptor() {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HandlerMethod handlerMethod = (HandlerMethod) handler;
// ... do something
log.info("Handler is: {}", handlerMethod);
return true;
}
}
此处理程序可对现有的REST端点按预期工作。但是,无论何时调用不存在的REST端点,都将返回500而不是预期的404。响应包含以下消息:
org.springframework.web.servlet.resource.ResourceHttpRequestHandler cannot be cast to org.springframework.web.method.HandlerMethod
Spring 4使用了完全相同的拦截器(用HandlerInterceptorAdapter
实现),因此我假设Spring 5在调用处理程序的方式上有所改变。
我还创建了一个小项目来演示GitHub上的这种行为。
所以我的问题是:在哪里可以找到有关Spring如何调用此拦截器以及handler
方法中preHandle
参数的确切处理内容的更多信息? / p>