将HandlerInterceptor迁移到Spring Boot 2.6

4

我有这段针对Spring 2.4实现的旧代码。

public class Interceptor extends HandlerInterceptorAdapter {

  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
      Object handler) throws Exception {
    ........
    return super.preHandle(request, response, handler);
  }
}

我将代码迁移到了Spring 2.6:

public class Interceptor implements HandlerInterceptor {

  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
      Object handler) throws Exception {
    ......................
    return HandlerInterceptor.super.preHandle(request, response, handler);
  }
}

我遇到了Cannot resolve method 'preHandle' in 'Object'的问题,所以我将代码更改为HandlerInterceptor.super.preHandle(request, response, handler);

这样更改代码是否正确:HandlerInterceptor.super.preHandle(request, response, handler);或者还有其他修改方式吗?

1个回答

6

这应该是

public class Interceptor implements HandlerInterceptor {

  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
      Object handler) throws Exception {
    ......................
    return true;
  }
}

注意这个方法返回布尔值。它告诉Spring是否进一步处理请求(true)还是不处理请求(false)。

HandlerInterceptorpreHandle()的默认实现只返回true (https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/HandlerInterceptor.html#preHandle-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-java.lang.Object-)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接