当前位置: 首页 > news >正文

spring cloud里面GlobalFilter和HandlerInterceptor的执行顺序

在Spring Cloud(Gateway)中,GlobalFilter 和 HandlerInterceptor 不存在直接的执行顺序比较,因为它们位于请求链路中完全不同的层级和时间点。

GlobalFilter 在 API网关层 执行,而 HandlerInterceptor 在请求到达后端微服务后,于Spring MVC框架内执行。

⏳ 完整请求链路中的执行顺序
一个请求从客户端到后端服务,其完整的执行顺序如下:

客户端 发起请求

API网关层 (Spring Cloud Gateway)

GlobalFilter (前置逻辑): 按 Order 值从小到大执行。

GatewayFilter (路由过滤器, 前置逻辑): 与 GlobalFilter 合并排序后执行。

路由转发: 请求被转发到目标微服务。

GatewayFilter (后置逻辑): 按 Order 值从大到小执行。

GlobalFilter (后置逻辑): 按 Order 值从大到小执行。

后端微服务 (Spring Boot)

Servlet Filter: 标准的Servlet过滤器。

HandlerInterceptor.preHandle(): 在Controller方法执行之前执行。

Controller / 业务逻辑

HandlerInterceptor.postHandle(): 在Controller方法执行之后,视图渲染之前执行。

HandlerInterceptor.afterCompletion(): 在请求完全结束后执行。

响应 返回给客户端

🎯 GlobalFilter 的执行顺序(网关层)
GlobalFilter 的执行顺序由 Ordered 接口的 getOrder() 方法决定,数值越小,优先级越高。

pre 阶段(请求前): Order 值越小,越先执行。

post 阶段(响应后): Order 值越小,越后执行。

Order值相同时的规则
当多个过滤器的 Order 值相同时:

同为 GlobalFilter: 执行顺序可能取决于类文件的加载顺序,不确定。

GlobalFilter vs GatewayFilter: GlobalFilter 会优先执行。

🎯 HandlerInterceptor 的执行顺序(微服务层)
HandlerInterceptor 的执行顺序由注册时的顺序决定。

preHandle(): 按照注册的顺序执行。

postHandle() 和 afterCompletion(): 按照注册的逆序执行。

💎 总结
简单来说,GlobalFilter 在网关层面拦截,HandlerInterceptor 在微服务内部拦截。理解它们在整个请求链路中的不同位置,有助于你更准确地设计全局性的鉴权、日志或路由策略。

http://www.jsqmd.com/news/1146916/

相关文章:

  • 高级RAG优化:预检索、检索与后检索策略
  • ThinkPad双风扇终极控制指南:TPFanCtrl2完全配置教程
  • 如何用Sunshine打造家庭游戏共享中心:完整指南
  • STM32L476RG与AD5593R的硬件协同设计与应用
  • LinkSwift:9大网盘免费直链解析工具终极指南,告别限速困扰
  • CPDS-analyzer核心功能解析:10个关键API接口详解
  • Blender下载安装与环境配置完整教程(附常见报错解决方案)
  • 本地化RAG适配能力专项测评——基于合肥区域产业场景GEO技术实测研究
  • STM32F446RE与CMT-8540S-SMT实现嵌入式音频控制
  • 手机号码定位终极指南:3分钟学会免费查询地理位置
  • 科技资讯:Win11暗藏大BUG,单文件狂吞500G硬盘,C盘爆红终于找到元凶
  • Paperxie AI科研绘图|告别低效作图!科研人专属全场景可视化提速神器
  • JD匹配度从45%到86%,我只做了这5步:2026年6款AI简历工具实测与STAR-C升维指南
  • Paperxie解锁科研绘图新范式!全学科一键出图告别软件内卷
  • TMC7300+PIC18F85K90驱动有刷直流电机方案解析
  • CVE-2022-32300 漏洞防御:为 YoudianCMS 9.5.0 实施 4 项安全加固方案
  • 激光测距模块行业全景盘点:主流品牌一览
  • P4377 [USACO18OPEN] Talent Show G|01 分数规划 + 01 背包限制重量下界 完整题解
  • Proxmox VE 9.2.2 初始配置与存储规划
  • 监督学习 vs 无监督学习:3个核心差异与5个典型应用场景对比
  • dsPIC30F4011与磁性蜂鸣器构建智能音频系统
  • Fast Requests Pro:IDE内嵌的HTTP请求自动化协议栈
  • ICM-42605与STM32L4A6RG实现6DOF运动追踪方案
  • Sunshine游戏串流技术革命:从边缘计算到沉浸式体验的架构演进
  • WarcraftHelper:让经典魔兽争霸3在现代电脑上流畅运行的完整解决方案
  • MAX77654与PIC18F8722构建低功耗嵌入式电源方案
  • 美容院常用美容仪器有哪些
  • Cartographer 与 Gmapping 建图实战对比:ROS Noetic 下 2D 建图精度与效率分析
  • 机器人世界模型的数据集与评估方法实战指南
  • LinkSwift:九大网盘直链解析神器,告别会员限速的智能下载方案