Spring MVC Restful API的拦截
1、首先创建一个过滤器TimeFilter,这个过滤器实现了Filter接口,有三个默认的方法,分别是init(FilterConfig arg0)、destroy()、doFilter(ServletRequest request, ServletResponse response, FilterChain chain),其中doFilter是真正实现拦截操作的。

2、如果想让过滤器TimeFilter起作用,只需要在TimeFilter类的上面加上@Componet注解即可。如果不使用@Componet注解,那么如何使用过滤器呢?我们创建一个WebConfig类,这个类继承WebMvcConfigurerAdapter,我们创建一个FilterRegistrationBean,加入Filter的配置,需要注意url的过滤规则。缺点是:只能拿到http的请求和响应,并不知道是哪个控制器哪个方法处理的。


1、拦截器Interceptor是Spring框架本身实现的,我们创建一个类TimeInterceptor,这个类实现HandlerInterceptor的接口,我们通过这种方式定义一个拦截器,这个拦截器默认的方法有:preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)、postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView)、afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex),我们根据需要写具体的实现,无论方法是否抛出异常都会走到afterCompletion,preHandle如果返回false则不会调用后面的方法。


2、拦截器Interceptor要想起作用,只在类上添加@Component注解是不够的,我们还需要额外的配置。我们依旧使用WebConfig类,这个类继承WebMvcConfigurerAdapter,addInterceptors方法注册拦截器。

1、Spring中的切片Aspect拦截,我们在定义切点的时候设置拦截规则,例如拦截所有UserController的方法等。在切片类上使用@Aspec和@Component注解即可生效。
