将HandlerInterceptor迁移到Spring boot 2.6

Pet*_*zov 4 java spring spring-boot

我为 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);
  }
}
Run Code Online (Sandbox Code Playgroud)

我将代码迁移到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);
  }
}
Run Code Online (Sandbox Code Playgroud)

我明白了Cannot resolve method 'preHandle' in 'Object',所以我将代码更改为HandlerInterceptor.super.preHandle(request, response, handler);

以这种方式编辑代码是否正确:HandlerInterceptor.super.preHandle(request, response, handler);或者应该以其他方式编辑?

dek*_*ard 6

这应该是

public class Interceptor implements HandlerInterceptor {

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

请注意,该方法返回一个布尔值。它告诉 Spring 进一步处理请求(true)或不进一步处理(false)。

preHandle()in的默认实现HandlerInterceptor只是返回truehttps://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- )