苍穹外卖DAY02--遇到的问题

苍穹外卖项目中jwt令牌校验的时候, server层需要获得jwt令牌中的EMP_ID,这时候使用线程,为什么?如果不使用线程能传入id吗

在苍穹外卖项目中,在增加员工时要记录创建人id和修改人的id,使用JWT令牌校验时,server层需要从JWT令牌中获取EMP_ID,通常会借助线程来实现。以下是原因分析以及是否可以不使用线程传入ID的讨论:


1. 为什么使用线程?

在JWT校验过程中,EMP_ID通常是从JWT令牌中解析出来的,而JWT校验一般是在拦截器或过滤器中完成的。为了在server层中能够方便地获取EMP_ID,通常会将其存储到当前线程的上下文中(如ThreadLocal),而不是通过方法参数层层传递。这样做的好处是:

1.1 避免参数传递的复杂性
  • 如果每次调用service层方法时都需要显式传入EMP_ID,会导致代码冗余,尤其是在多层调用时,参数传递会变得非常繁琐。

  • 使用线程上下文(如ThreadLocal)可以隐式传递EMP_ID,简化代码逻辑。

1.2 线程隔离
  • 每个请求对应一个独立的线程,将EMP_ID存储到当前线程的上下文中,可以确保不同请求之间的数据隔离,避免多线程并发问题。

  • 例如,用户A的请求不会获取到用户B的EMP_ID

1.3 符合设计模式
  • 这种方式符合“上下文传递”的设计模式,类似于Spring Security中的SecurityContextHolder,它将当前用户信息存储到线程上下文中,方便在任意地方获取。

1.4 代码解耦
  • EMP_ID存储到线程上下文中,可以使service层代码与具体的身份校验逻辑解耦,service层无需关心EMP_ID是如何获取的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值