解决重复查询用户问题
- 问题分析
在刚才提交代码的逻辑中,因为要用到登录的用户信息,因此再次查询了SSO提供的接口,查询用户。
事实上,在之前的拦截器中,也已经查询过用户了。重复的查询,增加了服务器压力,并且效率低。
我们能不能在拦截器中查询后,保存用户信息,后续的逻辑中可以直接获取用户信息呢?
方案:
- 把用户保存到request域中,一次请求中可以共享
- 把用户保存到ThreadLocal中,同一次请求,属于一个线程,可以共享
这里我们采用方案2
===========================
定义ThreadLocal工具
拦截器中保存User到ThreadLocal
提交订单时通过ThreadLocal查询
=====================================