spring MVC多个拦截器的执行顺序

welcome to my blog

问题描述, 当定义了多个拦截器时, 每个拦截器中的preHandle()方法的执行顺序是什么? 能否指定这些拦截器的执行顺序呢? 答案是可以的, 这里以多个拦截器之间的preHandle()方法为例

第一个拦截器, DataInterceptor

spring MVC多个拦截器的执行顺序

第二个拦截器, LoginTicketInterceptor

spring MVC多个拦截器的执行顺序

定义完拦截器后还需要创建对应的配置类, 这里命名为WebMvcConfig

实现WebMvcConfigure接口后需要重写addInterceptors()方法, 在该方法内为拦截器设置拦截的规则, 处理拦截器的顺序就是项目执行时拦截器的执行顺序, 如下图所示, 先处理的loginTicketInterceptor, 再处理的dataInterceptor, 所以项目执行时会先执行dataInterceptor的preHandle()方法, 再去执行loginTicketInterceptor的preHandle()方法
spring MVC多个拦截器的执行顺序

执行结果, 控制台的打印结果如下, 与分析相符

spring MVC多个拦截器的执行顺序