news 2026/7/9 1:29:16

SpringBoot 接口幂等性设计——防重复提交终极方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringBoot 接口幂等性设计——防重复提交终极方案

幂等性是指同一操作多次执行和一次执行的结果相同。支付、下单、转账等接口必须保证幂等性,否则用户多次点击就会产生多笔订单。

一、什么是幂等

非幂等:每次执行都会改变状态 请求1:扣款100元 → 余额900 请求2:扣款100元 → 余额800 ❌(重复扣款) 幂等:多次执行结果与一次相同 请求1:取消订单 → 订单已取消 请求2:取消订单 → 订单已取消 ✅(状态不变)

二、实现方案

1. 数据库唯一索引

// 订单表增加 order_no 唯一索引// 重复插入时数据库报错,捕获后返回"订单已存在"@TransactionalpublicOrdercreateOrder(OrderDTOdto){Orderorder=newOrder();order.setOrderNo(OrderNoGenerator.generate());// ...try{orderMapper.insert(order);returnorder;}catch(DuplicateKeyExceptione){thrownewBusinessException(400,"订单已存在,请勿重复提交");}}

2. Token + Redis(推荐)

@RestController@RequestMapping("/api")publicclassIdempotentController{@AutowiredprivateStringRedisTemplateredisTemplate;@GetMapping("/token")publicResultVO<String>getToken(){Stringtoken=IdUtil.simpleUUID();redisTemplate.opsForValue().set("idempotent:"+token,"1",30,TimeUnit.MINUTES);returnResultVO.success(token);}@PostMapping("/order")publicResultVO<?>createOrder(@RequestBodyOrderDTOdto,@RequestHeader("idempotent-token")Stringtoken){// 删除 Token,删除成功说明是首次请求Booleandeleted=redisTemplate.delete("idempotent:"+token);if(Boolean.FALSE.equals(deleted)){returnResultVO.error(400,"请勿重复提交");}// 业务逻辑...returnResultVO.success("下单成功");}}

前端流程:

1. 进入下单页 → 请求 /api/token 获取 Token 2. 提交订单 → header 携带 Token 3. 服务端校验 Token 是否存在,存在则删除并执行业务 4. 重复提交 → Token 已不存在 → 拒绝

💡 觉得有用的话,点赞 + 关注【张老师技术栈】吧!每周更新 Java/Python/爬虫 实战干货,不让你白来。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/9 1:27:55

鸿蒙6G全域通感一体化体系架构 第一卷一阶第六篇 太赫兹频段阴阳盛衰损耗演化定则

第一卷一阶第六篇 太赫兹频段阴阳盛衰损耗演化定则 承启前置说明 前五篇依次完成代际演化逻辑、统一数理公理、空天地海架构、信道数学范式、电磁场域公理、五元耦合总模型完整立论铺垫。本篇聚焦 6G 核心承载频段 —— 太赫兹&#xff0c;依托鸿蒙阴阳二元能量公理、四象能量…

作者头像 李华
网站建设 2026/7/9 1:27:37

MK20DN128VFM5与CMT-8540S-SMT实现嵌入式音频方案

1. 项目概述&#xff1a;为创意项目添加互动声音元素在当今的创客和嵌入式开发领域&#xff0c;为项目添加声音交互功能已成为提升用户体验的关键要素。MK20DN128VFM5微控制器与CMT-8540S-SMT蜂鸣器的组合&#xff0c;为开发者提供了一个经济高效的声音解决方案。MK20DN128VFM5…

作者头像 李华
网站建设 2026/7/9 1:24:49

抖店订单备注太多怎么管理一件代发特殊要求如何避免漏处理

抖店订单备注太多怎么管理&#xff1f;一件代发特殊要求如何避免漏处理 一件代发订单里&#xff0c;经常会出现各种备注&#xff1a;指定快递、不要放小票、改地址、延迟发货、颜色备注、补发说明。如果订单少&#xff0c;人工记一下还能处理&#xff1b;订单多了&#xff0c;很…

作者头像 李华
网站建设 2026/7/9 1:24:45

抖店达人带货订单怎么处理一件代发商家要注意佣金和发货

抖店达人带货订单怎么处理&#xff1f;一件代发商家要注意佣金和发货 抖店商品如果进入达人带货场景&#xff0c;订单可能增长很快&#xff0c;但风险也会同步放大。很多商家只看到达人能带来销量&#xff0c;却没提前算佣金、库存、发货速度和售后承接能力。 一、先算达人佣金…

作者头像 李华
网站建设 2026/7/9 1:23:29

YOLOv8改进 - 注意力机制 | CascadedGroupAttention:级联组注意力,增强视觉Transformer中多头自注意力机制的效率和有效性

前言 本文介绍了 EfficientViT 中的级联分组注意力机制——Cascaded Group Attention(CGA),用于降低传统多头自注意力中的计算冗余并提升特征表达能力。该方法通过将输入特征按通道分组分配给不同注意力头,并采用级联方式传递前一头输出,使各头学习更具差异性的注意力表示…

作者头像 李华