拦截器的运行流程分析(项目源码寻踪)
2023-09-11 14:22:32 时间
1.背景
- 我有两个后台,后台A需要调用后台B的接口,以实现从B的数据库中获取数据,并将数据存储到A的数据库中
- 为了保证安全性,我在A中定义了一个SignUtil的工具类根据一定规则生成签名,并将签名传入请求参数
- 在B中,为了验证参数和签名,我定义了两个拦截器来分别验证参数和签名(ParamsInterceptor(
extends HandlerInterceptor
)、SignInterceptor(extends HandlerInterceptorAdapter
)) - 并在WebMvcConfig中注册了两个拦截器
2.源码追踪分析工作流程
- 后台A的参数已经传到了B,并顺利通过了参数拦截器和签名拦截器的
preHandle
验证(两个preHandle都返回true),然后就交由HandlerExecutionChain
的applyPreHandle
继续处理:
- 先获取本工程中所有的Interceptor的类信息(必须是所有拦截器的preHandle都处理完之后才会跑到HandlerExecutionChain的applyPreHandle)
- 判断当前前置处理器返回的数据是否为true,如果为true,就将
interceptorIndex
置为i,并在遍历完所有拦截器的prehandle之后,如果所有的prehandle都返回true,则这里就返回true,否则就返回false
- 先获取本工程中所有的Interceptor的类信息(必须是所有拦截器的preHandle都处理完之后才会跑到HandlerExecutionChain的applyPreHandle)
- 执行完
HandlerExecutionChain
的applyPreHandle
之后,就交由DispatcherServlet
处理了- 判断
applyPreHandle
返回的值,如果返回值为false
就直接结束,也就不会分配实际的方法给你处理请求了
- 如果上述判断返回为
true
,DispatcherServlet
就会为请求分配具体的处理方法(实际调用处理程序)进行处理
- 然后程序就会来到后台A中处理改请求的接口方法处,继续运行:
- 判断
其流程如下图:
相关文章
- 搜芽项目开发之SVN协作流程
- 智能家居项目(1):软件开发流程
- 分布式系统的演进流程
- Spring MVC启动流程分析
- Kerberos认证流程详解
- 支付宝申请到编码流程
- eims系统新增一级目录菜单流程
- Linux 的启动流程
- Atiitt 自我学习法流程 1.预先阶段 1.1.目标搜索 资料搜索 1.2. 1.3.通过关联关键词 抽象 等领域 拓展拓宽体系树 1.4. 2.分析整理阶段 2.1.找出重点 压缩要学会
- Atitit mvc框架的实现 mvc的原理demo v2 sbb.docx 目录 1. 原理流程,1 1.1. 项目启动的时候启动mvc框架扫描,建立url 方法对应表1 1.2. 执行ur
- Atitit 常见每日流程日程日常工作.docx v8 verampmimp 签到amy 天气情况检查amy 晨会,每天或者隔天am 每日计划(项目计划,日计划等。am
- Atitit 找人软福利建设 技术团队建设大概流程
- Atitit v3项目快速推进的推荐技术标准化 规范 流程
- Activity之应用进程创建流程简析
- AI:人工智能领域具体应用场景案例介绍之以领域划分(CV领域/DS领域/NLP领域/金融领域/爬虫领域)、以项目划分(AI推荐/AI推断/AI法律咨询/AI挖掘)目录来理解技术交互流程
- 【图像处理】基于 Matlab GUI 阈值分类器进行草莓识别步骤流程
- 一个BPMN流程示例带你认识项目中流程的生命周期
- Spark 开源新特性:Catalyst 优化流程裁剪
- springboot项目中使用shiro 自定义过滤器和token的方式___shiro使用token登录流程
- 【Android Gradle 插件】Gradle 构建工具简介 ② ( Android 项目构建打包流程 | 构建工具发展 -> 手动配置 -> Ant -> Maven -> Gradle )
- 【Android 插件化】Hook 插件化框架总结 ( 插件包管理 | Hook Activity 启动流程 | Hook 插件包资源加载 ) ★★★
- 1.4 jmeter性能测试的基本流程
- 汇编语言入门六:流程控制(二)
- scATAC-seq入门必看 染色质可及性 archr官网全流程
- Android7.0 启动流程分析
- 软件测试技术之项目上线流程
- 流程测试——流程测试执行
- 项目测试流程规范(不同公司流程规范不一样,仅供参考)
- APP测试基本流程以及APP测试要点梳理,保证您看了不后悔!
- Flask 的整体流程
- 理解 C# 项目 csproj 文件格式的本质和编译流程
- Shell 流程控制
- 黑马C++笔记——演讲比赛流程管理系统