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

spring的两种拦截器HandlerIntercepter和MethodIntercepter

介绍

Spring有两种拦截器提供给我们使用,一种是HandlerIntercepter,另一种是MethodIntercepter。这两种的来源不同,实现方式也不同,具体的下面来看一下。

HandlerIntercepter

来源

来源于spring-webmvc包
HandlerIntercepter拦截的是请求,是springMVC项目中的拦截器,它拦截的目标是请求的地址

实现原理

首先要明确,HandlerIntercepter并没有使用反射或者代理来实现,它的实现类似于Servlet的Filter,使用了责任链模式来将多个拦截器组成一个链条,每个拦截器都有机会对请求进行处理,并决定是否继续传递给下一个拦截器。这样可以实现灵活的拦截逻辑,也方便拦截器的复用和扩展。

HandlerInterceptor是在请求到达处理器方法之前和之后执行的。它是通过HandlerMapping来映射处理器方法和拦截器的。HandlerMapping是一个接口,它有多个实现类,比如RequestMappingHandlerMappingBeanNameUrlHandlerMapping等。当程序启动的时候,Spring会扫描所有的处理器方法和拦截器,并将它们注册到对应的HandlerMapping中。当请求到达DispatcherServlet时,它会调用HandlerMapping来获取匹配的处理器方法和拦截器,并按照顺序执行拦截器的preHandle方法、处理器方法、postHandle方法和afterCompletion方法。

我们编写的拦截器,就在RequestMappingHandlerMappinginterceptors

过程

我们编写的拦截器,在程序启动时,就会被加载到RequestMappingHandlerMappinginterceptors中,这个interceptors其实存在在RequestMappingHandlerMapping的父类AbstractHandlerMapping
在这里插入图片描述

代码

这块儿我另开一篇,回头把链接更新过来。

MethodIntercepter

来源

来源于spring-aop包,MethodInterceptor是AOP项目中的拦截器,它拦截的目标是方法,而不是请求。它可以在方法执行前后添加额外的逻辑

实现原理

从它的来源来看,它的确使用了反射和动态代理的技术。

http://www.lryc.cn/news/44478.html

相关文章:

  • 初级算法-字符串
  • 华为OD机试题 - 寻找目标字符串(JavaScript)| 机考必刷
  • 删除Terminating状态的namespace:cattle-system
  • MiniOB 并发B+树实现解析
  • SpringCloud负载均衡服务调用——Ribbon
  • 各种邮箱服务软件对比
  • 相机单独标定的实现过程[autoware标定]、tmp文件的查看方式
  • 4.10.1、IP 多播技术的相关基本概念
  • PIGOSS BSM监控国产数据库Oscar
  • Spring Boot中文件上传
  • Github上传大文件(>25MB)教程
  • 面试官:mysql索引会缓存内存吗?
  • bs4解析数据和csv文件
  • Linux中Buffer和Cache的区别
  • Docker 镜像使用
  • Java阶段一Day10
  • 触摸屏与PLC之间如何快速实现无线PPI通信?
  • 【华为OD机试 2023最新 】 羊、狼、农夫过河(C++ 100%)
  • Java中关于try、catch、finally中的细节分析
  • Zookeeper原理
  • 关于FPGA如何快速生成模块的例化模板(实用)
  • 在 Python 中将字符串转换为集合
  • 大数据Flink进阶(十三):Flink 任务提交模式
  • day11—编程题
  • CentOS下安装crontab及cron表达式解析
  • python 绘制训练曲线--基于Numpy.convolve曲线平均滤波
  • 状态管理插件vuex
  • arthas—阿里开源的Java诊断工具
  • Java学习记录
  • OpenGL API 之 glVertexAttribPointer