使用场景
用户参数透传,如租户ID,tid,userID,Token等。这些参数与具体业务无关,但是又是必须的(如:租户ID,在数据落库时需要传入,但是在其他业务代码中基本用不到)如果作为方法的参数一层一层向下传递,必然造成代码的冗余和扩展性查等影响。
整片文章就以租户ID为例子说明吧。
1.使用ThreadLocal结合AOP
大致思路:在请求接口时,租户ID往往可以从Token或用户信息中取出,这时,在请求拦截器中,将用户TenantID取出,放入线程中。后面在需要TenantID时,直接从线程中取出,这样,既保证了简洁性也增加了易用性。
2.Pom依赖
本文使用阿里线程工具。
1 | xml复制代码<!--TTL--> |
3.RequestFilter
1 | java复制代码import lombok.SneakyThrows; |
4.TenantContextHolder(线程参数设置工具)
1 | java复制代码/** |
5.使用
在具体的Controller,Service,Mapper中,只要是当前请求的线程,都是可以直接使用TenantContextHolder.getTenantId()
获取租户ID的。
本文转载自: 掘金