SpringMvc 5.0使用拦截器的新姿势

105 阅读2分钟

图片

做一个单纯的程序汪,分享干货,聊聊人生。

微信公众号:后端架构进阶

关注我发现更多的干货,微服务、Spring源码、JVM、SpringCloud Alibaba、K8S等。

如果你觉得本文对你有帮助,麻烦给我点个赞,感谢支持!

历史文章汇总:包含Netty、源码、并发、JVM等

  • 最近在写springMvc拦截器的时候,发现HandlerInterceptor已经不推荐了。并且把拦截器注入到spring容器的bean也不推荐使用 WebMvcConfigurerAdapter了。对于代码强迫症患者,看到这种提示全身难受发麻,于是顺藤摸瓜,发现可以这么操作一下,于是做个记录。

一、SpringMvc拦截器

我们知道,spring mvc拦截器比spring的拦截器比起来,可以非常方便的获取HttpServletRequestHttpServletResponse等web对象实例,这就可以为我们操作这两个对象提供了非常大的想象空间。

spring mvc拦截器的顶层接口是:HandlerInterceptor,包含三个方法:

  • preHandle 目标方法执行前执行
  • postHandle 目标方法执行后执行
  • afterCompletion 请求完成时执行

为了方便我们一般情况会用HandlerInterceptor接口的实现类HandlerInterceptorAdapter类。但是自从web5.0后不推荐使用了,需要我们自己去实现。

image.png

假如我要对请求耗时进行打印,那么我直接实现 HandlerInterceptor即可。也是比较推荐的方式。

26d7f715.png

那么我们既然实现了before和after方法,我们得让spring知道我们这拦截器。

二、WebMvcConfigurer

如果我们要把web的拦截器交给spring,之前的方式是直接继承 WebMvcConfigurerAdapter 即可。但是现在不推荐了,那么我们就直接实现WebMvcConfigurer

0d67f432.png

到这一个非常简单的spring mvc的请求时间统计就已经ok了。再添加个简单的controller跑起来看看。

025ce053.png

效果如下,当然如果还有拓展权限管理、请求静态资源放行、加上我们的jwt授权验证等等都是直接在这基础之上进行拓展即可。

29d6284d.png

总结

以上就是今日的内容总结和分享,感谢各位大佬的 点赞关注收藏

微信公众号:后端架构进阶

更多文章正在赶来,喜欢记得给我点个 👍 ,感谢支持!

公众号文章同步更新!关注我,不迷路!