21ThreadLocal解决重复查user的问题

 

解决重复查询用户问题

  1. 问题分析

在刚才提交代码的逻辑中,因为要用到登录的用户信息,因此再次查询了SSO提供的接口,查询用户。

事实上,在之前的拦截器中,也已经查询过用户了。重复的查询,增加了服务器压力,并且效率低。

我们能不能在拦截器中查询后,保存用户信息,后续的逻辑中可以直接获取用户信息呢?

方案:

  1. 把用户保存到request域中,一次请求中可以共享
  2. 把用户保存到ThreadLocal中,同一次请求,属于一个线程,可以共享

这里我们采用方案2

===========================

定义ThreadLocal工具

21ThreadLocal解决重复查user的问题

 

拦截器中保存User到ThreadLocal

21ThreadLocal解决重复查user的问题

 

提交订单时通过ThreadLocal查询

21ThreadLocal解决重复查user的问题

=====================================