老师:是不是可以不用定义HttpFilter,Interceptor就可以处理了,为啥要定义2个?

来源:5-3 线程封闭

菜鸟精髓

2019-05-27

是不是可以不用定义HttpFilter ,因为HttpInterceptor的preHandle也可以在请求前将线程添加到ThreadLocal中 RequestHolder.add(Thread.currentThread().getId());

写回答

2回答

Jimin

2019-05-27

你好,就这个case而言是ok的,课程里这样演示一是为了演示filter和interceptor在springboot里的使用,另一个原因是我们习惯区分filter和interceptor,filter里根据指定的接口将需要的数据准备好,并对不满足条件或没权限的请求拦截住,而interceptor很多时候用来监听所有接口,做一些统一的处理比如记录调用日志统计接口耗时等。
课程里的这个场景其实用哪个都ok,不具体明显的特征,权限课程里的例子会更有些说服力。filter拦截住需要登录的接口,取出用户信息放到threadlocal里,然后在接口里随时可以使用用户信息,而interceptor则负责在所有接口结束时移除相关信息防止内存泄漏

1
1
菜鸟精髓
非常感谢!
2019-05-28
共1条回复

梨多情

2020-04-08

老师,你这样区分感觉没有意义啊?完全可以在同一个里面完成

能解释下你这样区分,有什么意义吗?

0
1
Jimin
这个不是我区分,我说的是习惯上这样使用。本身是可以写到一起的,是问题里想了解下区别
2020-04-09
共1条回复

Java高并发编程,构建并发知识体系,提升面试成功率

构建完整并发与高并发知识体系,倍增高薪面试成功率!

3923 学习 · 832 问题

查看课程