SpringBoot添加Interceptor后addInterceptors方法不执行,拦截器不生效

此处记录一下,项目使用中遇到过这个问题,百度长篇大论没一句有用的。

问题阐述

通过实现【WebMvcConfigurer】类后,addInterceptors方法就不执行,导致拦截器不生效。

原因

原因其实很简单,因为代码中有【WebMvcConfigurationSupport】的继承类,SpringBoot会判断,如果有【WebMvcConfigurationSupport】就不会加载【WebMvcConfigurer】。

解决方案

可在【WebMvcConfigurationSupport】的实现类中重写addInterceptors方法

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
如果在Spring Boot中使用拦截器Interceptor),但是在配置了拦截器后,却发现拦截器并没有生效,可能是以下原因导致的: 1. 拦截器未被注册 在Spring Boot中,要让拦截器生效,需要将其注册到WebMvcConfigurer中。示例代码如下: ```java @Configuration public class WebConfig implements WebMvcConfigurer { @Autowired private MyInterceptor myInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(myInterceptor).addPathPatterns("/**"); } } ``` 在上面的代码中,我们将MyInterceptor注册到WebMvcConfigurer中,并指定了拦截的路径为“/**”。 2. 拦截器配置的路径不正确 在使用addPathPatterns()方法指定拦截路径时,一定要确保路径配置正确。如果路径配置错误,拦截器就无法生效。 3. 拦截器的顺序问题 在多个拦截器的情况下,拦截器执行顺序可能会影响拦截器的生效情况。可以通过实现Ordered接口或在WebMvcConfigurer中使用addInterceptor()方法传入order参数来指定拦截器执行顺序。示例代码如下: ```java @Configuration public class WebConfig implements WebMvcConfigurer { @Autowired private MyInterceptor1 myInterceptor1; @Autowired private MyInterceptor2 myInterceptor2; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(myInterceptor1).addPathPatterns("/**").order(1); registry.addInterceptor(myInterceptor2).addPathPatterns("/**").order(2); } } ``` 在上面的代码中,我们指定了MyInterceptor1先于MyInterceptor2执行。 4. 拦截器被忽略 有些情况下,拦截器可能会被忽略掉,例如静态资源的访问、登录等请求。可以通过配置WebMvcConfigurer的addResourceHandlers()方法或者自定义Filter来解决该问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铁蛋的铁,铁蛋的蛋

留一杯咖啡钱给作者吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值