您的位置:首页 > 财经 > 产业 > 网站建设 响应式_产品设计方案3000字_windows优化大师免费_全国最大的关键词挖掘

网站建设 响应式_产品设计方案3000字_windows优化大师免费_全国最大的关键词挖掘

2025/4/8 6:02:28 来源:https://blog.csdn.net/u010448530/article/details/146589271  浏览:    关键词:网站建设 响应式_产品设计方案3000字_windows优化大师免费_全国最大的关键词挖掘
网站建设 响应式_产品设计方案3000字_windows优化大师免费_全国最大的关键词挖掘

在Spring Boot中,你可以通过多次调用registry.addInterceptor()来注册多个拦截器,并通过order()方法或添加顺序来控制它们的执行顺序。以下是具体实现方式:

1. 注册多个拦截器并控制顺序

@Configuration
public class WebConfig implements WebMvcConfigurer {@Autowiredprivate VideoInterceptor videoInterceptor;@Autowiredprivate AnotherInterceptor anotherInterceptor;@Autowiredprivate LoggingInterceptor loggingInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {// 第一个拦截器(最后执行)registry.addInterceptor(loggingInterceptor).addPathPatterns("/**").order(3);  // 数字越大,优先级越低// 第二个拦截器registry.addInterceptor(anotherInterceptor).addPathPatterns("/api/**").order(2);// 第三个拦截器(最先执行)registry.addInterceptor(videoInterceptor).addPathPatterns("/video/**").order(1);  // 数字越小,优先级越高}
}

2. 关于执行顺序的关键点

  1. order值决定顺序

    • order()值越小,拦截器越先执行

    • 类似Filter的链式调用,但顺序与Filter相反

  2. 执行流程

    • 请求进入时:order小的先执行

    • 响应返回时:order小的后执行

    • 比如order(1)的拦截器:preHandle最先执行,postHandleafterCompletion最后执行

  3. 如果不指定order

    • 默认按添加顺序执行(最后添加的优先级最低)

    • 但显式指定order是更可靠的做法

3. 实际应用示例

假设你需要:

  1. 先验证权限(order=1)

  2. 然后记录日志(order=2)

  3. 最后处理视频请求(order=3)

@Override
public void addInterceptors(InterceptorRegistry registry) {// 1. 权限验证(最先执行)registry.addInterceptor(authInterceptor).addPathPatterns("/**").excludePathPatterns("/public/**").order(1);// 2. 日志记录registry.addInterceptor(loggingInterceptor).addPathPatterns("/**").order(2);// 3. 视频处理(最后执行)registry.addInterceptor(videoRequestInterceptor).addPathPatterns("/hls/**").order(3);
}

4. 注意事项

  • 如果多个拦截器拦截同一路径,order小的会先执行

  • 某个拦截器的preHandle返回false时,后续拦截器和控制器都不会执行

  • 推荐为每个拦截器明确指定order,避免不可预期的行为

通过这种方式,你可以灵活控制多个拦截器的执行顺序和拦截范围。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com