spring的两种拦截器HandlerInterceptor和MethodInterceptor

简介: spring的两种拦截器HandlerInterceptor和MethodInterceptor

介绍

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

HandlerInterceptor

来源

来源于spring-webmvc包

HandlerInterceptor拦截的是请求,是springMVC项目中的拦截器,它拦截的目标是请求的地址

实现原理

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

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

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

过程

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

代码

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

MethodInterceptor

来源

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

实现原理

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

目录
相关文章
|
29天前
|
监控 Java 数据安全/隐私保护
如何用Spring Boot实现拦截器:从入门到实践
如何用Spring Boot实现拦截器:从入门到实践
49 5
|
2月前
|
Java API Spring
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中拦截器的入门教程和实战项目场景实现的详细指南。
37 0
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
|
4月前
|
前端开发 JavaScript Java
Spring Boot中使用拦截器
本节主要介绍了 Spring Boot 中拦截器的使用,从拦截器的创建、配置,到拦截器对静态资源的影响,都做了详细的分析。Spring Boot 2.0 之后拦截器的配置支持两种方式,可以根据实际情况选择不同的配置方式。最后结合实际中的使用,举了两个常用的场景,希望读者能够认真消化,掌握拦截器的使用。
|
5月前
|
监控 前端开发 Java
Spring Boot中的拦截器配置
Spring Boot中的拦截器配置
|
7月前
|
前端开发 Java 程序员
Spring Boot统一功能处理(拦截器, 统一数据返回格式, 统一异常处理)
Spring Boot统一功能处理(拦截器, 统一数据返回格式, 统一异常处理)
134 1
|
6月前
|
监控 前端开发 Java
Spring Boot中的拦截器配置
Spring Boot中的拦截器配置
|
6月前
|
前端开发 JavaScript Java
【Spring Boot】 深入理解Spring Boot拦截器:自定义设计与实现全攻略
【Spring Boot】 深入理解Spring Boot拦截器:自定义设计与实现全攻略
113 0
|
7月前
|
前端开发 Java Spring
[AIGC] Spring Interceptor 拦截器详解
[AIGC] Spring Interceptor 拦截器详解
|
7月前
|
前端开发 Java 数据安全/隐私保护
Spring Boot使用拦截器:概念与实战
【4月更文挑战第29天】拦截器(Interceptors)在Spring Boot应用中常用于在请求处理的前后执行特定的代码,如日志记录、认证校验、权限控制等。本篇博客将详细介绍Spring Boot中拦截器的概念及其实战应用,帮助开发者理解和利用拦截器来增强应用的功能。
112 0
|
7月前
|
缓存 前端开发 Java
【Spring底层原理高级进阶】轻松掌握 Spring MVC 的拦截器机制:深入理解 HandlerInterceptor 接口和其实现类的用法
【Spring底层原理高级进阶】轻松掌握 Spring MVC 的拦截器机制:深入理解 HandlerInterceptor 接口和其实现类的用法