1.基于ThreadLocal实现,拦截器获取的用户信息在接口中使用_threadloacl获取账号数据_JAVA·D·WangJing的博客-CSDN博客2基于ThreadLocal实现,拦截器获取的用户信息在接口中使用_threadloacl获取账号数据https://blog.csdn.net/wang_jing_jing/article/details/1177386472.Httpsessonid
3.HttpServletRequest
优缺点:
1.优点,可以在任何地方获取用户信息,不限于Http请求的上下文,例如后台任务等;线程隔离,每个线程都有自己的用户信息副本,互不干扰
缺点:生命周期管理较为复杂,需要手动清理ThreadLocal中的数据,否则可能导致内存泄露;需要注意线程池的使用,因为线程池中的线程可能被复用,导致ThreadLocal中的数据被其他请求使用;
2.优点可以跨请求共享数据,用户信息在多个请求之间可以保持一致,无需每次请求都重新验证Cookie,更适合存储较大的会话数据,例如购物侧信息,用户偏好设置等;
缺点,生命周期较长,占用服务器内存资源,可能导致内存泄露(尤其是在高并发场景下);性能较差,因为需要将用户信息存储在服务端的会话中,可能涉及到序列化和反序列化的开销;可能需要额外的会话管理机制,例如在分布式系统中使用Redis等存储会话数据;
3.优点生命周期明确,与请求的生命周期绑定,请求结束时,用户信息自动销毁,不会造成内存泄露,性能较好,因为用户信息仅存储在当前请求的内存中,不需要额外的存储和序列化开销;
缺点:无法跨请求共享数据,每个请求都需要重新验证Cookie并设置用户信息