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

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

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

  1. @Component
  2. public class LoggingInterceptor implements AsyncHandlerInterceptor {
  3. @Override
  4. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
  5. return true;
  6. }
  7. @Override
  8. public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
  9. // Logging HTTP request into database here...
  10. }
  11. }

在中激活拦截器 WebMvcConfigurer 实施:

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

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

暂无答案!

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

相关问题