spring怎么设置boot拦截器(springboot下)
spring怎么设置boot拦截器(springboot下)这里的InterceptorRegistry,有一个addInterceptor方法,可以添加自定义的拦截器。这个方法其实就是springMvc拦截器,只是以前ssm或者ssh时候大家用xml配置,而springboot没有xml所以需要手写一个类继承WebMvcConfigurerAdapterSystemException是我自定义异常,继承运行时异常(RuntimeException)。这样就会被@ExceptionHandler捕获到。重写beforBodyRead方法:这里就可以对请求进行拦截,可以在这做权限验证、token校验等等。以前我们做拦截器无外乎2种方法,1、springMvc的拦截器;2、aop。但是相比之下使用RequestBodyAdvice还是方便一点。三、WebMvcConfigurerAdapter
前面2篇介绍了springboot的搭建以及jpa的使用,今天说一下经常用的拦截器,springboot是怎么去实现他的呢?
一般来说在项目中拦截器主要用在:1、Exception的拦截。2、request或者response拦截。它们都用到了@RestControllerAdvice注解,@RestControllerAdvice下面有
继续点进去,@ControllerAdvice注解类中使用 @ExceptionHandler、@InitBinder、@ModelAttribute注解的方法将应用到所有 @RequestMapping注解的方法,不过只有 @ExceptionHandler最有用,另外两个用处不大。
一、Exception拦截:
如图所示@ExceptionHandler:统一处理@RequestMapping(包括post,getmapping)标注的接口所抛出异常,从而能够减少代码重复率和复杂度。我们只需要在抛出一个运行时异常,就可以被这个这个注解捕获到,统一处理后返回前端(注意@RestControllerAdvice包含@ResponseBody所以,处理完会返回前段json格式),如:
SystemException是我自定义异常,继承运行时异常(RuntimeException)。这样就会被@ExceptionHandler捕获到。
重写beforBodyRead方法:这里就可以对请求进行拦截,可以在这做权限验证、token校验等等。以前我们做拦截器无外乎2种方法,1、springMvc的拦截器;2、aop。但是相比之下使用RequestBodyAdvice还是方便一点。
三、WebMvcConfigurerAdapter
这个方法其实就是springMvc拦截器,只是以前ssm或者ssh时候大家用xml配置,而springboot没有xml所以需要手写一个类继承WebMvcConfigurerAdapter
这里的InterceptorRegistry,有一个addInterceptor方法,可以添加自定义的拦截器。
总结:WebMvcConfigurerAdapter方法相当于springMvc拦截器,会优先于@RestControllerAdvice。@RestControllerAdvice可以看作所有的@RestController的最高级,在访问接口时,会先被它拦截,进行处理。其实说到这大家可以发现,springboot的拦截器基本还是用spring和springmvc,所以springboot不是ssm或者ssh的替代品,只是对他们进行了一个封装,使其配置变成默认配置(可以修改)。