请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

正在回答

2回答

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

1 回复 有任何疑惑可以回复我~
  • 提问者 菜鸟精髓 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-05-28 13:27:21
梨多情 2020-04-08 21:16:32

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

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

0 回复 有任何疑惑可以回复我~
  • Jimin #1
    这个不是我区分,我说的是习惯上这样使用。本身是可以写到一起的,是问题里想了解下区别
    回复 有任何疑惑可以回复我~ 2020-04-09 21:52:15
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信