@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (this.logger.isDebugEnabled()) {
this.logger.debug(">>> handler: " + handler);
}
HandlerMethod handlerMethod = (HandlerMethod) handler;
Login login = handlerMethod.getMethod().getAnnotation(Login.class);
}
我在Spring 3.X中拥有上面的拦截器代码,可以正常工作。
我喜欢在Spring Boot 1.3的具有
@CrossOrigin
和@RequestMapping
方法的Controller中使用此代码。但发生以下错误。
如何在Spring Boot 1.3中的Interceptor
preHandle
方法处获取方法信息?Caused by: java.lang.ClassCastException: org.springframework.web.servlet.handler.AbstractHandlerMapping$PreFlightHandler cannot be cast to org.springframework.web.method.HandlerMethod
最佳答案
添加到一个部分中以处理4.2 Spring之后添加的CORS请求,这将再次处理“拦截器”。
因此,您可以添加代码来检查对象的“handler”类型是否为“HandlerMethod”类型。
例如
if (handler instanceof HandlerMethod) {...}