我有这个 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
. 我想避开第一个。
问:拦截程序记录两个请求,或者我的配置有误,有什么应用程序原因吗?
暂无答案!
目前还没有任何答案,快来回答吧!