这个问题一般是解决WebMvcConfigurerAdapter过时问题造成的。导致这个问题可能有两个原因:一个是拦截器写错了,另一个是拦截器配置错了。

1、需求是这样的

拦截所有的api请求,判断其请求头中的secret参数是否正确,正确的请求才能访问api

2、拦截器配置

需要先写拦截器,然后再配置到Spring Boot环境中。

2.1、写一个拦截器

Spring MVC中,拦截器有两种写法:要么实现HandlerInterceptor接口,要么实现WebRequestInterceptor接口,具体内容请看这里详述 Spring MVC 框架中拦截器 Interceptor 的使用方法。
Spring Boot也只是集成了Spring MVC而已,所以拦截器的写法还是一样的。不一样的是Spring MVC的拦截器需要在xml文件中配置,而Spring Boot只需要在类上加@Component注解即可,这样当前拦截器才会被扫描到。
这里只需要实现HandlerInterceptor接口即可(这里没啥坑)。

/*** author : 颜洪毅* e-mail : yhyzgn@gmail.com* time   : 2019-08-29 17:44* version: 1.0.0* desc   : 用户拦截器*/
@Component
public class UserInterceptor implements HandlerInterceptor {private static Logger log = Logger.getLogger(UserInterceptor.class);@Autowiredprivate UserThreadLocal local;@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {log.info("接收到请求");local.set(request.getParameter("user"));return true;}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {local.remove();log.info("请求响应完成");}
}

2.2、将拦截器配置到Spring Boot环境中

目前(2.0.4.RELEASE版本)WebMvcConfigurerAdapter已过时,如果你执意要用的话,应该没啥坑。但是被强迫症时刻针对的人,坑就来啦。
WebMvcConfigurerAdapter过时了,那么用谁来代替呢?机智的人可能早就发现了,过时的这个只不过是个适配器(适配器模式),那就可以直接使用它所实现的那个接口啊,就是WebMvcConfigurer呗。对,就是这个,别犹豫了。。我就被百度坑得不轻,具体说说怎么被坑的吧。

  • 百度后我查到的解决方案这样的

    两种方法,并且都还强烈推荐第二种方法

// 方法一:实现WebMvcConfigurer接口
public class WebConfig implements WebMvcConfigurer{// ...
}// 方法二:继承WebMvcConfigurationSupport类
public class WebConfig extends WebMvcConfigurationSupport{// ...
}

于是就直接用了第二种方法,写完跑了项目发现没啥效果,打日志也出不来。然后又改回第一种方法,果然,有效果了。

具体配置如下
必须加上@Configuration注解,Spring才能统一管理当前的拦截器实例。
addPathPatterns("/api/**")配置拦截路径,其中/**表示当前目录以及所有子目录(递归),/*表示当前目录,不包括子目录。

/*** author : 颜洪毅* e-mail : yhyzgn@gmail.com* time   : 2019-08-29 17:48* version: 1.0.0* desc   : mvc配置*/
@Configuration
public class WebConfig implements WebMvcConfigurer {@Autowiredprivate UserInterceptor interceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {// 添加拦截器,配置拦截地址registry.addInterceptor(interceptor).addPathPatterns("/api/**");}
}

不出意外的话,你的拦截器应该起作用啦!

Spring Boot 拦截器无效,不起作用相关推荐

  1. Spring Boot拦截器(WebMvcConfigurerAdapter)

    直接按我的步骤走都没有问题: 1 配置自定义的拦截器: package com.configs;import org.slf4j.Logger; import org.slf4j.LoggerFact ...

  2. 解决Spring Boot 拦截器注入service为空的问题

    解决Spring Boot 拦截器注入service为空的问题 参考文章: (1)解决Spring Boot 拦截器注入service为空的问题 (2)https://www.cnblogs.com/ ...

  3. 使用spring boot拦截器实现青少年模式

    思路方法一: 便用Spring Boot拦截器采累计在线时间采实现青少年模式的步骤,可以参考以卜步骤: 1.创建一个拦截器类,实现Handlerlnterceptor 接口. 2.在拦截器类中,定义一 ...

  4. Spring Boot 拦截器

    (一)拦截器概述 1.1拦截器介绍 拦截器的作用类似于Servlet 中的Filter,都可以用于对处理器进行预处理和后处理.在Spring MVC 与Spring Boot 中使用拦截器一般是实现H ...

  5. spring boot 拦截器获取controller返回的数据_高级码农Spring Boot实战与进阶之过滤器和拦截器的使用及其区别...

    众所周知的Spring Boot是很优秀的框架,它的出现简化了新Spring应用的初始搭建以及开发过程,大大减少了代码量,目前已被大多数企业认可和使用.这个专栏将对Spring Boot框架从浅入深, ...

  6. Spring boot拦截器登录检查

    拦截器 进行登录检查 从登录页面跳转到成功页面之后 为了防止表单重复提交 配置视图映射,利用重定向到成功页面 此时,在浏览器直接输入,配置的视图映射地址 也可以直接映射.跳转到成功页面 登录页面,也就 ...

  7. Spring Boot拦截器(Interceptor)详解

    写了那么久的博客,始于Python爬虫,目前专于Java学习,终于有了属于自己的小窝,欢迎各位访问我的个人网站. 文章目录 Interceptor 介绍 Interceptor 作用 自定义 Inte ...

  8. java 拦截器响应中取所有参数,spring boot拦截器中获取request post请求中的参数

    最近有一个需要从拦截器中获取post请求的参数的需求,这里记录一下处理过程中出现的问题. 首先想到的就是request.getParameter(String )方法,但是这个方法只能在get请求中取 ...

  9. spring boot拦截器 过滤器

    1.拦截器 登录拦截 自定义拦截路径 //全局配置继承WebMvcConfigurer接口 @Configuration public class MyHandler implements WebMv ...

最新文章

  1. TensorFlow 1.7.0正式发布,Bug修复和改进内容都在这里了
  2. java 十二星座数据下载_十二星座
  3. Spring-----projects-----概述
  4. TCP 协议面试灵魂 12 问 | 强势整理
  5. 免输入用户名和密码以及git clone以后想提交代码
  6. 小米5点位图_5.22首域金融午评:次日02:00 美联储公布5月货币政策会议纪要
  7. jsp标签 判断 余数_程序员的数学基础课(三)余数与迭代法
  8. 类Array对象中是否该直接使用Array的原型方法?
  9. jquery 获取当前元素的索引值
  10. AC日记——[NOI2006]最大获利 bzoj 1497
  11. C语言基础教程篇之程序结构
  12. 别再用 Visio 了!试试这个比它快 10 倍的画图工具不香吗?
  13. 前端面试 - 项目流程
  14. myeclipse10破解找不到common文件夹的问题
  15. 网络营销优势有哪些?
  16. VML Mathematical Functions
  17. 音质好的蓝牙耳机有哪些?盘点四款好音质蓝牙耳机
  18. 微信内的浏览器缓存清理方法
  19. Boundary Loss 原理与代码解析
  20. 国内外日常上网必备,实用趣味网站合集

热门文章

  1. 自动驾驶入门技术(3) —— 毫米波雷达
  2. CF 111B Petya and Divisors
  3. 浅谈面向对象与女娲造人
  4. 整数序列中的众数和中位数
  5. Flink入门教程(四)——窗口(二)
  6. 百度地图画圆、画扇形、画多边形、画点
  7. Android 9格锁屏
  8. 世界互联网大会,马云、马化腾、库克、李彦宏都说了一件事
  9. springboot集成druid,sql监控无效果,解决方案
  10. AI 已死?不,AIGC 给我们带来了新的希望