springboot多个拦截器执行顺序

24

如果第一个拦截器的 preHandle 方法返回 true,而第二个拦截器的 preHandle 方法返回 false,则第一个拦截器的 afterCompletion 方法仍然会被执行。

Spring Boot 中的拦截器是按照配置的顺序依次执行的。当请求进入控制器方法之前,会按照配置顺序依次执行每个拦截器的 preHandle 方法,如果其中一个拦截器的 preHandle 方法返回 false,则后续的拦截器的 preHandle 方法和控制器方法都不会被执行,而是直接跳转到最后一个拦截器的 afterCompletion 方法。在这个过程中,如果某个拦截器的 preHandle 方法返回 true,则会继续执行下一个拦截器的 preHandle 方法,直到所有拦截器的 preHandle 方法都执行完毕。然后,控制器方法会被执行,并且在控制器方法执行完毕后,会按照相反的顺序依次执行每个拦截器的 afterCompletion 方法。

因此,如果第一个拦截器的 preHandle 方法返回 true,而第二个拦截器的 preHandle 方法返回 false,则第一个拦截器的 afterCompletion 方法仍然会被执行。