拦截器的配置以及执行顺序
在Spring Boot中,拦截器的执行顺序可以通过InterceptorRegistry对象的addInterceptor()方法按照添加的顺序进行配置。
默认情况下,拦截器的执行顺序是按照它们添加到拦截器注册表中的顺序执行的。也就是说,先添加的拦截器会先执行,后添加的拦截器会后执行
import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new FirstInterceptor()) .addPathPatterns("/**") .order(1); // 设置拦截器的执行顺序为1 registry.addInterceptor(new SecondInterceptor()) .addPathPatterns("/**") .order(2); // 设置拦截器的执行顺序为2 } }
在上述例子中,首先注册的是FirstInterceptor拦截器,然后注册的是SecondInterceptor拦截器。因为设置了拦截器的执行顺序,所以FirstInterceptor会先执行,然后才轮到SecondInterceptor执行。
在Spring Boot中,如果前面的拦截器拦截了请求并返回false,后续的拦截器将不会执行。当一个拦截器的preHandle方法返回false时,拦截器链会立即终止,后续的拦截器将不会被执行。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决