1.很多项目中需要在代码中使用当前登录用户的信息,但是又不方便把保存用户信息的session对象传来传去,这种情况下,就可以考虑使用 ThreadLocal。ThreadLocal是一个依附于本地线程的变量,按照我的理解,每次对​​服务器​​请求,都会使用到一个线程,ThreadLocal的作用就是在这个线程的使用过程中只为这个线程所用。

2.ThreadLocal(线程本地变量)通常理解为“采用了空间换时间的设计思想,主要用来实现在多线程环境下的线程安全和保存线程上下文中的变量”。在实际的项目开发中(比如2C APP程序的服务器端程序),通常在APP调用服务端API接口的时候,需要token(登录)验证并且在具体的方法中可能会使用到当前登录账户的更多信息(比如当前登录账户的用户ID)。以前的做法,我们喜欢把(通过token获取)用户登录信息放在http请求的request请求对象中,但是这样做是耦合性很强,比较相同的代码重复使用。通过了解ThreadLocal的特性后,这种情况使用ThreadLocal来实现会很合适。

 

实现方法:ThreadLocal工具类+过滤器