传输用户参数,例如租户ID,TID,USERID,令牌等。这些参数与特定业务无关,但这是必要的(例如,在数据库中需要传递的租户ID,但是,如果使用该方法的参数,则基本上不使用其他业务代码),不可避免地会导致代码和可伸缩性检查的效果。
整篇文章以租户ID为例。
一般思考:当请求接口时,通常可以从令牌或用户信息中删除租户的ID。目前,在请求拦截器中,取出用户tenantid并将其放在线程中。当需要tenantid时,它将直接从线程中取出。通过这种方式,它可以确保简单性和有用性增加。
本文使用ALI线程工具。
/**
* @author litongzero
*/
@utilityClass
公共类TenantContextholder {
私人最终线局部
/**
* TTL设置租户ID
* @param tenantid
*/
public void settenantid(integer tenantid){{{
thread_local_tenant.set(tenantid);
}
/**
*在TTL中获取房客ID
* @返回
*/
公共整数gettenantid(){
return thread_local_tenant.get();
}
/**
*清除当前线程中的租户
*谨慎使用
*/
public void clear(){
thread_local_tenant.remove();
}
}在特定控制器,服务,映射器中,只要它是当前要求的线程,您就可以直接使用租户ID。