BaseContext是基于ThreadLocal类封装的工具类,用于在同一线程中的封装数据和获取数据。
在http的一次请求中,一些特定情境下,我们无法通过request.getSession.getAttribute获取当前所登录用户的id,此时若需要获取当前所登录用户的id,我们可以采用ThreadLocal来解决问题,首先要明确一个问题就是,ThreadLocal并不是一个Thread,而是Thread的局部变量。
当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。ThreadLocal为每个线程提供单独一份存储空间,具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问。