请稍等 ...
×

采纳答案成功!

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

老师 这里的threadLocal不是特别理解

不同的请求进来 获取到的User都是同一个吗 threadLocal什么时候被回收呢 对thradLocal的用法不是特别了解

正在回答

1回答

threadlocal其实就是与当前线程绑定的一个线程,它的生命周期与当前线程是一致的。

之所以开发的时候使用它来获取用户信息,就是因为SpringMVC本身是线程安全的,每一个Request都会触发一个新的线程。 在这个期间我们绑定一个threadlocal,当response返回时,该threadlocal就会被销毁。

0 回复 有任何疑惑可以回复我~
  • 提问者 kimvra #1
    老师 那这里第一个请求访问authcontroller将用户id写入threadLocal,返回response token以后,threadLocal被销毁,那为什么第二个请求访问hello controller的时候能拿到currentUser中的数据呢
    回复 有任何疑惑可以回复我~ 2019-01-10 13:11:11
  • Allen 回复 提问者 kimvra #2
    因为咱们是每次请求进来都会查一次数据库呀
    回复 有任何疑惑可以回复我~ 2019-01-10 17:33:36
  • 提问者 kimvra 回复 Allen #3
    哦哦 谢谢老师 是我代码看错了 以为是在第一次请求的时候把userId放进threadLocal的   现在理解了 谢谢老师解惑
    回复 有任何疑惑可以回复我~ 2019-01-10 19:24:28
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信