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

Filter、Interceptor、Spring AOP 的执行顺序

引言

在我们的日常开发工作中,Filter(过滤器)、Interceptor(拦截器)和 AOP(面向切面编程)是非常常用的 3 种请求处理技术。在不同的应用场景中,使用它们都可以在不影响主业务逻辑的前提下为系统增加额外的功能。

三者之间对比

  • Filter 是 Java Servlet 规范的一部分,它工作在 Servlet 容器层面,是 Servlet 容器级别的,适用于所有进入应用的 HTTP 请求。

  • Interceptor 是 Spring MVC 框架提供的一种请求处理机制,是属于框架级别的。通过 Interceptor 章节的源码可以看出,Interceptor 工作在 Spring MVC 分发处理请求时,而分发请求的类是 DispatcherServlet,它是一个 Servlet,根据 Servlet 规范,Filter 是先于 Servlet 执行的。所以 Filter 要比 Interceptor 优先执行。

  • Spring AOP 是 Spring 框架提供的面向切面编程的支持,允许我们在不改变原有业务逻辑的前提下,集中处理横切关注点。它的执行时机是在特定的连接点,也就是请求已经到了我们 controller 中的某个方法时才会触发,而 Interceptor 在执行查找到的 handler 之前就已经被调用了,所以 Interceptor 要先于 Spring AOP 执行。一般情况是这样。若将AOP切在spring框架层面的代码上就不一定了。

执行顺序如下图:

在Spring Web项目中,发起一个http请求,执行顺序依次是:Filter、DispatcherServlet、HandlerInterceptor、Controller。准确的说应该是filter的doFilter()->HandlerInterceptor类的preHandle()

本篇主要基于 SpringBoot 介绍了过滤器、拦截器和 Spring AOP,通过学习其基本知识了解到了它们工作时的执行顺序。实际上,其实无论是过滤器还是拦截器,都可以被视为 AOP 思想的具体实现形式,尽管它们各自工作在不同的层次上。

注:相同的interceptor中order越小越靠前执行

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 {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new FirstInterceptor()).order(1);registry.addInterceptor(new SecondInterceptor()).order(2);}
}

相关文章:

  • 深入解析Linux软件包管理:apt/yum源配置与Vim编辑器高效使用指南
  • Day08 【基于jieba分词实现词嵌入的文本多分类】
  • 维港首秀!沃飞长空AE200亮相香港特别行政区
  • XCTF-web(一)
  • 旅游特种兵迪士尼大作战:DeepSeek高精准路径优化
  • (五)机器学习---决策树和随机森林
  • C/C++运算
  • SMT贴片:现代电子制造的核心工艺
  • CASAIM与京东方达成合作,CASIAM IS智能联动AOI漏光检测攻克屏幕翘曲度及漏光检测难题
  • MuJoCo 画出机械臂末端轨迹进行可视化(附代码)
  • 编程技能:调试01,调试介绍
  • Summary
  • ES和MySQL概念对比
  • 向量数据库
  • 解锁元生代:ComfyUI工作流与云原生后端的深度融合
  • 【设计模式】观察者
  • RabbitMQ 为什么引入 Exchange 的概念, 交换机有什么作用.
  • QML与C++:基于ListView调用外部模型进行增删改查(性能优化版)
  • 【Leetcode-Hot100】最大子数组和
  • 【教程】如何使用Labelimg查看已经标注好的YOLO数据集标注情况
  • 上海杨浦:优秀“博主”购房最高可获200万补贴
  • 新疆维吾尔自治区乌鲁木齐市米东区政协原副主席朱文智被查
  • 5月12日至13日北京禁飞“低慢小”航空器
  • 成都公积金新政征求意见:购买保障性住房最高贷款额度上浮50%
  • 刘诚宇、杨皓宇进球背后,是申花本土球员带着外援踢的无奈
  • 江西省文化和旅游厅厅长梅亦已任省委宣传部副部长