防止重复提交:Java 服务端幂等键设计
ccai 2026-09-14 11:48:12 发布3444 浏览 25 点赞 0 收藏
用户连续点击按钮、网络重试或系统重新发送请求,都可能造成重复创建订单。
客户端为每次业务操作生成 requestId,服务端建立唯一约束:
@Transactional
public CreateResult createOrder(String requestId, CreateCommand command) {
Optional<CreateResult> old = idempotencyRepository.find(requestId);
if (old.isPresent()) {
return old.get();
}
Order order = orderRepository.insert(command);
CreateResult result = new CreateResult(order.getId());
idempotencyRepository.save(requestId, result);
return result;
}真正生产代码还需要处理并发请求,因此数据库唯一索引不能省略。幂等记录应保留合理时间,过期后再清理。
测试同一个请求并发提交 5 次,确认只生成一条业务数据。
©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
IDE
标签
Java
相关推荐
文搜图新玩法:结合 HarmonyOS 创新特性的差异化体验设计
174
0围绕“端侧重建”方向,如何设计一个从拍摄到 3D 重建的完整应用?
179
0报名成功直接开更:华为 Mate 60 等系列机型获鸿蒙 7 花粉 Beta 升级,超空间内存技术下放
智慧的键盘侠
223
0HarmonyOS Preferences 键设计:默认值、常量与类型安全读取
1214
0
ccai
我还没有写个人简介......
30
帖子
0
提问
0
粉丝
最新发布
一笔加油费到月度报表:用 ArkTS 做一个离线优先的“车账本”
2026-09-18 17:38:18 发布大文件上传的断点续传:HarmonyOS 客户端与 Java 服务端协作
2026-09-18 17:36:40 发布热门推荐
8137 浏览


京公网安备:11010502051901号