您的位置 首页 java

SpringBoot-自定义拦截器

之前实现的SpringBoot自定义 过滤器 ,这次试试拦截器。

首先我们应该了解过滤器好拦截器的区别:

最简单区别在于:
1,过滤器可以修改 request 请求,而拦截器不能 ,
2,过滤器需要在 servlet 容器中实现,拦截器可以适用于javaEE,javaSE等各种环境 
3,拦截器可以调用IOC容器中的各种依赖,而过滤器不能 
4,过滤器只能在请求的前后使用,而拦截器可以具体到每个方法
 

拦截器实现:

一,实现HandlerInterceptor自定义拦截器类

@Slf4j
public class CustomHandlerInterceptor implements HandlerInterceptor{
 
 @ Override 
 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
 throws Exception {
 log.info("preHandle:请求前调用");
 //返回 false 则请求中断
 return true;
 }
 
 @Override
 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
 ModelAndView modelAndView) throws Exception {
 log.info("postHandle:请求后调用");
 
 }
 
 @Override
 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
 throws Exception {
 log.info("afterCompletion:请求调用完成后回调方法,即在视图渲染完成后回调");
 
 }
 
}

 

二,继承WebMvcConfigurerAdapter注册拦截器

@Configuration
public class WebMvcConfigurer extends WebMvcConfigurerAdapter{
 
 @Override
 public void addInterceptors(Interceptor registry  registry) {
 //注册拦截器 拦截规则
 //多个拦截器时 以此添加 执行顺序按添加顺序
 registry.addInterceptor(getHandlerInterceptor()).addPathPatterns("/*");
 }
 
 @Bean
 public static HandlerInterceptor getHandlerInterceptor() {
 return new CustomHandlerInterceptor();
 }
}

 

最后,访问自己服务的任意地址,就能看到效果了。

文章来源:智云一二三科技

文章标题:SpringBoot-自定义拦截器

文章地址:https://www.zhihuclub.com/187471.shtml

关于作者: 智云科技

热门文章

网站地图