首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么Spring HandlerExecutionChain既有拦截器又有interceptorList?

Spring HandlerExecutionChain既有拦截器(interceptor)又有interceptorList的原因是为了提供更灵活的请求处理和拦截机制。

拦截器是Spring MVC框架中的一种组件,它可以在请求处理的不同阶段进行拦截和处理。拦截器可以在请求到达Controller之前或之后执行一些预处理或后处理操作,如身份验证、日志记录、异常处理等。拦截器可以通过实现HandlerInterceptor接口来自定义,然后通过配置将其应用到特定的请求处理器上。

interceptorList是HandlerExecutionChain类中的一个属性,它是一个List类型的集合,用于存储多个拦截器。通过interceptorList,可以将多个拦截器按照一定的顺序组合起来,形成一个拦截器链。当请求到达Controller时,拦截器链中的每个拦截器都会按照顺序执行相应的拦截逻辑。

使用拦截器和interceptorList的好处在于:

  1. 灵活性:拦截器和interceptorList可以根据具体需求进行自定义和配置,可以根据不同的请求处理器应用不同的拦截器链,以实现灵活的请求处理和拦截逻辑。
  2. 可扩展性:通过实现自定义的拦截器,可以方便地扩展和定制请求处理流程,满足特定业务需求。
  3. 代码复用:可以将一些通用的拦截逻辑抽象成拦截器,然后在多个请求处理器中共享使用,提高代码的复用性和维护性。
  4. 解耦合:拦截器和interceptorList可以将请求处理和拦截逻辑解耦,使得代码更加清晰和可维护。

对于Spring HandlerExecutionChain的应用场景,可以是任何需要在请求处理前后进行拦截和处理的场景,如权限验证、日志记录、异常处理等。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云数据库(TencentDB):https://cloud.tencent.com/product/cdb
  • 腾讯云内容分发网络(CDN):https://cloud.tencent.com/product/cdn
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iot
  • 腾讯云移动开发(Mobile):https://cloud.tencent.com/product/mobile
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链(Blockchain):https://cloud.tencent.com/product/baas
  • 腾讯云元宇宙(Metaverse):https://cloud.tencent.com/product/metaverse
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

惊呆了,Servlet Filter和Spring MVC Interceptor的实现居然这么简单

ImageFilter的doFilter方法都会执行 如果你在一个Filter方法后不加chain.doFilter(request, response) 则后续的Filter和Servlet都不会执行,这是为什么呢...相信你看完ApplicationFilterChain类的doFilter方法一下就明白了,就是一个简单的递归调用 Spring MVC Interceptor Interceptor的使用 以前写过一篇拦截器应用的文章...,有想了解使用方式的小伙伴可以看一下 用Spring MVC拦截器做好web应用的安保措施 今天就来分析一下拦截器是怎么实现的?...public class HandlerExecutionChain { private List interceptorList = new ArrayList...MVC会根据请求返回一个HandlerExecutionChain对象 // 然后执行HandlerExecutionChain的applyPreHandle方法,controller

64720
  • 万字长文,深度解析SpringMVC 源码,让你醍醐灌顶!!

    HandlerExecutionChain 源码如下,主要包含了 3 个信息 handler:请求处理器,通常就是我们自定义的 controller 对象及方法 interceptorList拦截器,...当前请求匹配到的拦截器列表 interceptorIndex:拦截器索引,用来记录执行到第几个拦截器了 public class HandlerExecutionChain { private final...:请求处理器,通常就是我们自定义的 controller 对象及方法 interceptorList拦截器,当前请求匹配到的拦截器列表 interceptorIndex:拦截器索引,用来记录执行到第几个拦截器了...(); i++) { HandlerInterceptor interceptor = this.interceptorList.get(i); //调用拦截器的preHandle..., mv); mappedHandler.applyPostHandle源码如下,逆序调用拦截器的postHandle方法 org.springframework.web.servlet.HandlerExecutionChain

    1.8K22

    SpringBoot拦截器和动态代理有什么区别?

    Spring Boot 中,拦截器和动态代理都是用来实现功能增强的,所以在很多时候,有人会认为拦截器的底层是通过动态代理实现的,所以本文就来盘点一下他们两的区别,以及拦截器的底层实现。...1.拦截器拦截器(Interceptor)准确来说在 Spring MVC 中的一个很重要的组件,用于拦截 Controller 的请求。...1.1 拦截器实现在 Spring Boot 中拦截器的实现分为两步:创建一个普通的拦截器,实现 HandlerInterceptor 接口,并重写接口中的相关方法。...将上一步创建的拦截器加入到 Spring Boot 的配置文件中,并配置拦截规则。具体实现如下。...1.2 拦截器实现原理Spring Boot 拦截器是基于 Java 的 Servlet 规范实现的,通过实现 HandlerInterceptor 接口来实现拦截器功能。

    36710

    SpringBoot拦截器和动态代理有什么区别?

    Spring Boot 中,拦截器和动态代理都是用来实现功能增强的,所以在很多时候,有人会认为拦截器的底层是通过动态代理实现的,所以本文就来盘点一下他们两的区别,以及拦截器的底层实现。...1.拦截器 拦截器(Interceptor)准确来说在 Spring MVC 中的一个很重要的组件,用于拦截 Controller 的请求。...1.1 拦截器实现 在 Spring Boot 中拦截器的实现分为两步: 创建一个普通的拦截器,实现 HandlerInterceptor 接口,并重写接口中的相关方法。...将上一步创建的拦截器加入到 Spring Boot 的配置文件中,并配置拦截规则。 具体实现如下。...1.2 拦截器实现原理 Spring Boot 拦截器是基于 Java 的 Servlet 规范实现的,通过实现 HandlerInterceptor 接口来实现拦截器功能。

    35550

    徒手撸框架---实现 Aop

    之前在看过的大部分教程,对于 Spring Aop 的实现讲解的都不太透彻,大部分文章介绍了 Spring Aop 的底层技术使用了动态代理,至于 Spring Aop 的具体实现都语焉不详。...为什么要使用 Aop? Spirng 实现 Aop 的思路是什么 自己根据 Spring 思想实现一个 Aop 框架 Aop 是什么?...为什么需要使用 Aop? 面向切面编程,实际上就是通过预编译或者动态代理技术在不修改源代码的情况下给原来的程序统一添加功能的一种技术。...Spring Aop 是怎么实现的? 所谓: 计算机程序 = 数据结构 + 算法 在阅读过Spring源码之后,你就会对这个说法理解更深入了。 Spring Aop实现的代码非常非常的绕。...Spring 将这个 Advisor 转换成自己能够识别的数据结构 -- AdvicedSupport。Spirng 动态的将这些方法拦截器织入到对应的方法。 生成动态代理代理。

    975120

    徒手撸框架--实现Aop

    上一讲我们讲解了Spring 的 IoC 实现。大家可以去我的博客查看,这一讲我们继续说说 Spring 的另外一个重要特性 AOP。...之前在看过的大部分教程,对于Spring Aop的实现讲解的都不太透彻,大部分文章介绍了Spring Aop的底层技术使用了动态代理,至于Spring Aop的具体实现都语焉不详。...为什么要使用Aop? Spirng 实现Aop的思路是什么 自己根据Spring 思想实现一个 Aop框架 Aop 是什么?...为什么需要使用Aop? 面向切面编程,实际上就是通过预编译或者动态代理技术在不修改源代码的情况下给原来的程序统一添加功能的一种技术。...Spring 将这个 Advisor 转换成自己能够识别的数据结构 – AdvicedSupport。Spirng 动态的将这些方法拦截器织入到对应的方法。 生成动态代理代理。

    34720

    浅谈 | 过滤器、监听器、拦截器和AOP

    (Interceptor) 拦截器简说 拦截器,这里指的是Spring中的拦截器,主要用于拦截用户请求并做相应的处理。...拦截器和过滤器、监听器不同,它不依赖于Servlet容器,依赖于Spring框架,是AOP的一种体现,底层基于Java的动态代理实现。...拦截器特点:(1)拦截器基于Java反射机制(动态代理)实现;(2)拦截器Spring特有的,能使用Spring中的任何资源;(3)拦截器可以用于Web程序,也可以用于Application和Swing...相比于拦截器Spring AOP封装性更好,且功能更强大,使用的时候需要单独引入spring-boot-starter-aop这一jar包。...IndexInterceptor中注入的IndexService对象是空的: 为什么是这样呢?

    1.3K30
    领券