@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) {...}

10-06 05:00