之前实现的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();
}
}
最后,访问自己服务的任意地址,就能看到效果了。