SpringWeb-AsynchHandlerInterceptor中的两个连续http请求,而http 500?

imzjd6km  于 2021-06-30  发布在  Java
关注(0)|答案(0)|浏览(210)

我有这个 AsyncHandlerInterceptor 在我的spring应用程序(问题的简化版本)中,将所有http请求记录到db中。

@Component
public class LoggingInterceptor implements AsyncHandlerInterceptor {

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

  @Override
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {

    // Logging HTTP request into database here...

  }

}

在中激活拦截器 WebMvcConfigurer 实施:

@Override
  public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(loggingInterceptor).order(Integer.MAX_VALUE - 1);
}

它的工作原理和我预期的一样,但当目标控制器抛出异常(http500)时,拦截器会记录两个请求,而不是一个请求。第一个是http 200 OK 第二个(紧跟在第一个之后)正确地登录http 500 Internal Server Error . 我想避开第一个。
问:拦截程序记录两个请求,或者我的配置有误,有什么应用程序原因吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题