在Springboot项目中, 拦截器也是开发中常用手段,要来做登陆验证、性能检查、日志记录等。写个例子看看,一个拦截器、一个配置类、一个拦截器要拦截的类。
![46eb3e65523b6a1552bb6dada3a70d99.png](https://i-blog.csdnimg.cn/blog_migrate/21527b8df9818289b6ef69d3e7a42176.jpeg)
第一拦截器,这个拦截器要实现HandlerInterceptor接口,这个接口里有四大方法,preHandle是在请求controllor前调用,postHandler在调用Controller方法之后、视图渲染之前调用,afterCompletion是在渲染视图完成之后使用,afterConcurrentHandlingStarted方法用来处理异步请求。
![c814f17b7110ac21051b541b92a5fd73.png](https://i-blog.csdnimg.cn/blog_migrate/08c998cfc92c1364a55d821a194449b8.jpeg)
在拦截器配置类class上使用要注解@Configuration,这里要实现接口WebMvcConfigurer。
老版本呢是继承WebMvcConfigurerAdapter,不过新版本已经放弃了,推荐用上面的方式。
![db6a8ab0d616227ed5fe23a5f2da55a8.png](https://i-blog.csdnimg.cn/blog_migrate/07aeb06aa33fa96261e577dbbf4fba64.jpeg)
重写addInterceptors方法,这个方法里呢要配置两项,一个是拦截器,一个是拦截器的URL。 例子里指明了拦截器Test1Interceptor,拦截的url "/hello/**"。
![56b990f38e42225f88d0f771b91ead10.png](https://i-blog.csdnimg.cn/blog_migrate/2f09b5efc72f320e062fd9e251f2c44c.jpeg)
写一个控制类,接下来就可以请求了,请求被正确响应。
![1d43c6e52ea1d4cdf0f4e9729489e42f.png](https://i-blog.csdnimg.cn/blog_migrate/5b85a8d471459a640d24d7a4b98b95f4.jpeg)
控制台也正常输出了拦截器打印信息。
![093b426d8c00264e4d0c7ec326df6e92.png](https://i-blog.csdnimg.cn/blog_migrate/77e4d77e09d724b1e785fa8d6da24c79.jpeg)
测试成功!说明各项配置都是正确的,没毛病!