我们新增个Controller来测试下他们的运行顺序
import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;import java.util.Map;@RestControllerpublic class DemoController {@GetMapping("/demo")public Map test() {Map map = new HashMap() ;map.put("a","123") ;return map ;}}我们访问http://localhost:{port}/demo可以看到后台打印如下日志

文章插图
可以看出他们的拦截顺序:filter—>Interceptor—->@Aspect。以下这个图可以比较直观看出他们之间的拦截顺序

文章插图
总结: 过滤器和拦截器的区别,过滤器是依赖于servlet容器(struts),在实现上基于函数回调,可以对几乎所有的请求进行过滤 。但缺点是一个过滤器实例只能在容器初始化时调用一次,来进行过滤操作,获得我们想要的数据 。
三者之间主要还是粒度的差异,应用场景的不同 。
过滤器(Filter) :采用filter过滤器,可以获取http、http请求和响应,但无法获取与spring框架相关的信息,如哪个control处理,哪个方法处理,有哪些参数,这些都是无法获取的 。
拦截器(Interceptor):采用interceptor拦截器,除了获取http、http请求和响应对象,还可以获取请求的类名、方法名,但拦截器无法获取请求参数的值 。
切片 (Aspect) : 切片 aspect 可以获取传入的参数值,但无法获取原始的http,http请求和响应对象 。
【springboot三种拦截器】
推荐阅读
- Mysql删除数据表的三种方式详解
- 三种人坚决不能吃桂花,这种人坚决不能吃
- SpringBoot集成多数据源
- SpringBoot整合RabbitMQ四种交换机类型详解
- 发型|女人不到40岁,前3种发型别尝试,后三种发型值得拥有
- 程序员标配Springboot!终于有人把SpringBoot讲的通俗易懂了
- LVS三种模式的实现原理、配置及优点缺点详解
- 从网络请求过程看OkHttp拦截器
- SpringBoot事件监听:应用监听接口的使用
- 恒星往往是静止的而行星则围绕恒星运动 恒星行星卫星三种天体运动的关系是什么
