上面说了用threadLocal的目的,但实际上不用threallocal也不是不行,但得看你们系统架构咋做的
如果是分布式的架构,只需要在最外层设计个网关,在网关里解析一下token,拿到一些必要的用户信息,之后把这些信息作为header透传给下游服务就可以了。
如果是单体应用,也有一招:可以用argumentReslover + 自定义注解 去自定义 controller层的对象解析,在解析器里面获取token,去redis里查询出用户信息,然后根据注解配置去注入对象;这样在api层就能直接通过自定义注解 + 对象去直接拿到用户信息了。
中心思想就是怎么实现在controller层之前统一拿到token解析用户信息,然后还能保证在controller层获取到用户信息,实现形式可以是五花八门的。