尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
JEECG-Boot 接口幂等性怎么落地:Token 机制与分布式锁两把钥匙,一次说清
JEECG-Boot 接口幂等性怎么落地Token 机制与分布式锁两把钥匙一次说清【免费下载链接】jeecg-boot【低代码v2.0一句话即可生成整个系统】企业级AI低代码平台一键生成前后端代码甚至整个系统。 AI Skills 一句话画流程、设计表单、生成报表、大屏。内置 AI应用平台涵盖AI聊天、知识库、流程编排、MCP插件等兼容主流大模型。引领AI低代码「Skills 生成 → 在线配置 → 代码生成 → 手工合并-AI修改」开发模式解决 Java 项目 90% 重复工作提高效率又不失灵活。项目地址: https://gitcode.com/GitHub_Trending/je/jeecg-boot先说个常见翻车现场用户双击提交订单网络刚好慢一拍同一个订单插了两次库或者 MQ 把扣款消息重投了一次钱扣了两遍。这就是接口幂等性要管的事——同一个请求打进来一次和打进来三次产生的结果必须一样。JEECG-Boot 里针对这类问题实际上准备了两种手段认证侧的 Token 校验机制和基于 Redisson 的分布式锁。这篇文章就带你把这两把钥匙分清楚各自能解什么锁、怎么接进来。一次双击和一次重投是两件不同的事新手最容易犯的错是把防重复当成一个整体方案去找其实它拆开后是两个问题问题一同一个客户端把同一个动作发了多次。双击、表单连点、超时重试来源都是人或端。你希望的是第二个请求根本别进来。问题二多个请求并发地改同一份数据。两个服务实例同时给库存 -1谁先谁后没人管数据就脏了。你希望的是同一时刻只有一个请求能碰它。这两种问题混在一起谈就会出现我上了锁怎么还重复提交这种扯不清的锅。下面分开看。Token 机制JEECG-Boot 里的 Token 到底管到哪一步先泼一盆冷水JEECG-Boot 的 Token 机制是登录态JWT的鉴权校验不是业务级的防重放 Token。它的入口在 TokenUtils.verifyToken核心逻辑就这几步public static boolean verifyToken(String token, CommonAPI commonApi, RedisUtil redisUtil) { if (StringUtils.isBlank(token)) { throw new JeecgBoot401Exception(token不能为空!); } String username JwtUtil.getUsername(token); if (username null) { throw new JeecgBoot401Exception(token非法无效!); } // ... 查用户、校验状态再走 jwtTokenRefresh 校验/续期 return true; }注意jwtTokenRefresh这一步Token 会存在 Redis 里校验时如果快过期就续期目的是让用户操作时不掉线。所以它的角色很明确——确认你是谁而不是确认这个动作能不能再做一次。那防重复提交谁来兜底老实说前端按钮防抖 后端分布式锁才是 JEECG-Boot 生态里实际扛住重复提交的主力。如果你需要一次性凭证先领 Token、提交即作废那种严格幂等设计需要自己在业务层加一层平台没有现成注解。这点心里有数省得照着网上文章找了一个不存在的 API。分布式锁接入三步走JEECG-Boot 的 Redisson 锁后端并发这层JEECG-Boot 给的是jeecg-boot-starter-lock基于 Redisson用法有注解式和编程式两种。仓库里现成的示例在 DemoLockTest.java三步接入第一步加依赖。在你的业务模块 pom 里引入dependency groupIdorg.jeecgframework.boot/groupId artifactIdjeecg-boot-starter-lock/artifactId /dependency第二步配 Redis。在application-dev.yml里已有现成的一段jeecg: lock: #分布式锁配置 redisson: address: 127.0.0.1:6379 password: type: STANDALONE enabled: true第三步用锁。注解式最简单适合定时任务这类同一时间只能跑一份的场景Scheduled(cron 0/5 * * * * ?) JLock(lockKey CloudConstant.REDISSON_DEMO_LOCK_KEY1) public void execute() throws InterruptedException { // 每 5 秒触发一次但同一时刻全集群只有一个实例在跑 }需要更细控制比如抢不到锁就跳过而不是排队就用编程式注入RedissonLockClient后if (redissonLock.tryLock(key, -1, expireSeconds)) { try { // 执行业务逻辑 } finally { redissonLock.unlock(key); } }这里tryLock第二个参数是等待时间-1表示不等待第三个是锁的持有时长。为什么必须带过期时间因为持锁的进程可能崩掉没有兜底的锁会把整个业务卡死。Redisson 内部有看门狗机制配合但业务侧显式传expireSeconds仍然是好习惯。两种方案怎么选一张表看完维度Token 机制登录态校验分布式锁Redisson解决的问题请求是否来自合法在线用户同一时刻谁允许碰这份数据作用范围全局鉴权所有接口锁粒度你定按 key 隔离挡得住重复提交吗挡不住它只管身份能挡住并发重复执行部署形态单体、微服务通用依赖 Redis天然跨实例典型失败姿势Token 过期用户被踢锁没释放、锁粒度太粗适用场景所有接口的准入控制库存扣减、订单号生成、定时任务互斥一句话记忆Token 管谁能进锁管谁能先动。防重复提交想彻底一点还得在前端把按钮做防抖后端用锁兜底三层一起上。容易踩的坑与落地建议锁粒度别贪大。用全局一把大锁保护整个订单流程等于把并发能力清零。key 里带上业务主键比如lock:order:{orderId}只锁该锁的那条数据。unlock 必须放进 finally。上面示例里那层try/finally不是仪式感业务抛异常时锁不释放后续请求全部卡死。等待时间和持锁时间是两回事。tryLock(key, -1, expire)里第一个是抢不到等多久第二个是抢到后最多拿多久。新手经常把-1当成持锁时间锁永远不自己放直接生产事故。别指望 Token 帮你幂等。再次强调JEECG-Boot 的 Token 是登录态。如果你的场景是消息重投要幂等要么在消费端用锁 去重表要么自己做一次性 Token别把希望寄托在鉴权 Token 上。先量再改。上锁前先确认瓶颈真的是并发冲突而不是 SQL 慢。锁解决不了慢查询反而把单线程慢放大成全员排队。最后给个务实的落地顺序前端防抖止血 → 后端JLock或tryLock兜住并发 → 对账/去重表做最终一致性核对。三件套齐了大部分重复提交和重复扣款的工单就再也不会来了。 【免费下载链接】jeecg-boot【低代码v2.0一句话即可生成整个系统】企业级AI低代码平台一键生成前后端代码甚至整个系统。 AI Skills 一句话画流程、设计表单、生成报表、大屏。内置 AI应用平台涵盖AI聊天、知识库、流程编排、MCP插件等兼容主流大模型。引领AI低代码「Skills 生成 → 在线配置 → 代码生成 → 手工合并-AI修改」开发模式解决 Java 项目 90% 重复工作提高效率又不失灵活。项目地址: https://gitcode.com/GitHub_Trending/je/jeecg-boot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

GATE与检查点模式:stitch-skills如何让AI Agent安全行驶

GATE与检查点模式:stitch-skills如何让AI Agent安全行驶

GATE与检查点模式:stitch-skills如何让AI Agent安全行驶 【免费下载链接】stitch-skills A library of Agent Skills designed to work with the Stitch MCP server. Each skill follows the Agent Skills open standard, for compatibility with coding agents suc…

📅 2026/10/31 17:08:03
大模型AI安全防护:提示注入与RAG数据投毒应对指南

大模型AI安全防护:提示注入与RAG数据投毒应对指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/5 16:12:38
/ego-browser 命令新手教程:一句自然语言,让 AI Agent 帮你搞定浏览器任务

/ego-browser 命令新手教程:一句自然语言,让 AI Agent 帮你搞定浏览器任务

/ego-browser 命令新手教程:一句自然语言,让 AI Agent 帮你搞定浏览器任务 【免费下载链接】ego-lite The fastest browser for AI agents to run browser automation, built for sharing your logged-in browser state with your AI agents, like Codex…

📅 2026/9/20 13:12:03
MORE NEWS

更多资讯

📰

红本中级电工证含金量高吗?怕考不过白交培训费的别错过

红本中级电工证含金量高吗?怕考不过白交培训费的别错过 怕考不过白交培训费?别急,红本中级电工证含金量高不高,关键在你选对了路。今天就带你一步步看清楚怎么拿证、怎么用证、怎么续证,不走弯路,少花冤枉钱。 红本中级电工证到底是什么?…

📰

织金技校办电工证怎么考官方报名入口在哪找

织金技校办电工证怎么考官方报名入口在哪找 之前考的证在外省能不能转过来?这是很多学员问得最多的。特别是从外省过来的学员,比如从贵州毕节、贵阳,甚至更远的四川、重庆等地过来,都想知道自己手中的电工证能不能在当地顺利使用。其实,现在国家对特种作…

📰

顺庆区考电工证怎么过实操考试?官方报名入口全攻略来了

顺庆区考电工证怎么过实操考试?官方报名入口全攻略来了 实操考试心里没底怕挂科?顺庆区考电工证的报名流程你搞清楚了吗?别再稀里糊涂去考试,看完这篇,报名入口、考试重点、备考技巧都给你整明白了。 案例背景:一个开封在职建筑工人的电工证之路…

📰

绵阳办电工证在哪里办多少钱最划算

绵阳办电工证在哪里办多少钱最划算 你是不是也这样,听说要考电工证,满大街找机构,结果越找越迷糊,不知道哪家靠谱,怕被中介坑,还担心 多少钱 才够?别急,今天就给你讲明白,绵阳办电工证到底该去哪办,怎么避坑, 多少钱 才合理,别再被忽悠了。…

📰

木工瓦工不是特种工吗上岗必备的真相和转证攻略

木工瓦工不是特种工吗上岗必备的真相和转证攻略 之前考的证在外省能不能转过来?这个问题,咱们工地上的木工、瓦工师傅最关心。最近不少朋友问我,木工瓦工是不是特种工?能不能直接上岗?今天就从政策、考试、转证这些角度,给你讲清楚。…

📰

三级电工证资料全攻略:证书过期了不知道怎么复审延期?电子证书怎么查?

三级电工证资料全攻略:证书过期了不知道怎么复审延期?电子证书怎么查? 证书过期了不知道怎么复审延期?别慌!现在越来越多的电工从业者开始关注【三级电工证资料】,特别是电子证书的获取与管理,直接关系到职业发展和合规上岗。本文将从鹤壁公路工程从业…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬