Spring 拦截机制 Filter、Interceptor、Aspect区别

Spring 拦截机制 Filter、Interceptor、Aspect的区别

前言

在日常的项目中,我们经常需要对request进行拦截然后进行一些逻辑操作,拦截的方式有三种,分别是Filter、Interceptor和Aspect,这三种方式分别有什么区别呢?

拦截顺序

Spring 拦截机制 Filter、Interceptor、Aspect区别
从图中可以看出,请求从先到后经过 Filter > Interceptor > Aspect – >Controller
测试项目的结果依然可以看出是这个拦截顺序
Spring 拦截机制 Filter、Interceptor、Aspect区别

区别

  1. Filter:与Spring 无关,基于Servlet, 可以获取request 和 response,但是具体处理方法及相关参数获取不到;
  2. Interceptor:与Spring相关,可以获取request 和 response 以及具体处理方法,但是获取不到具体方法参数的值;
  3. Aspect: 与Spring相关,不可获取request和response , 可以获取具体方法及具体方法参数的值;