老师:是不是可以不用定义HttpFilter,Interceptor就可以处理了,为啥要定义2个?
来源:5-3 线程封闭
![](http://img1.sycdn.imooc.com/user/5458666300017f2102200220-100-100.jpg)
菜鸟精髓
2019-05-27
是不是可以不用定义HttpFilter ,因为HttpInterceptor的preHandle也可以在请求前将线程添加到ThreadLocal中 RequestHolder.add(Thread.currentThread().getId());
写回答
2回答
-
你好,就这个case而言是ok的,课程里这样演示一是为了演示filter和interceptor在springboot里的使用,另一个原因是我们习惯区分filter和interceptor,filter里根据指定的接口将需要的数据准备好,并对不满足条件或没权限的请求拦截住,而interceptor很多时候用来监听所有接口,做一些统一的处理比如记录调用日志统计接口耗时等。
课程里的这个场景其实用哪个都ok,不具体明显的特征,权限课程里的例子会更有些说服力。filter拦截住需要登录的接口,取出用户信息放到threadlocal里,然后在接口里随时可以使用用户信息,而interceptor则负责在所有接口结束时移除相关信息防止内存泄漏112019-05-28 -
梨多情
2020-04-08
老师,你这样区分感觉没有意义啊?完全可以在同一个里面完成
能解释下你这样区分,有什么意义吗?
012020-04-09
相似问题