微服务之间共享threadlocal_SpringBoot+SpringCloud实现登录用户信息在微服务之间的传递...

本文介绍了如何在微服务架构中利用SpringBoot和SpringCloud,通过ThreadLocal实现登录用户信息在各个服务间的传递。主要步骤包括创建ThreadLocal工具类、拦截器、过滤器,以及通过注解简化配置。通过这种方式,可以在不侵入业务代码的前提下,便捷地在微服务间共享用户信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现思路:

1:准备一个ThreadLocal变量,供线程之间共享。

2:每个微服务对所有过来的Feign调用进行过滤,然后从请求头中获取User用户信息,并存在ThreadLocal变量中。

3:每个微服务在使用FeignClient调用别的微服务时,先从ThreadLocal里面取出user信息,并放在request的请求头中。

4:封装为一个注解,在启动类上标记即可。

代码样例:

1:ThreadLocal工具类 :UserInfoContext

packagecom.test.domi.common.system;importcom.test.domi.dao.UserInfo;public classUserInfoContext {private static ThreadLocal userInfo = new ThreadLocal();public static String KEY_USERINFO_IN_HTTP_HEADER = "X-AUTO-FP-USERINFO";publicUserInfoContext() {

}public staticUserInfo getUser(){return(UserInfo)userInfo.get();

}public static voidsetUser(UserInfo user){

userInfo.set(user);

}

}

2:准备承载用户信息的userInfo实体类(代码略)

3:编写拦截器 : TransmitUserInfoFeighClientIntercepter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值