幂等性(防重复提交)

编程入门 行业动态 更新时间:2024-10-25 12:24:35

幂等性(防重复提交)

幂等性(防重复提交)

文章目录

  • 1. 实现原理
  • 2.使用示例
  • 3. @Idempotent注解
  • 4. debug过程

主要用途:防止用户快速双击某个按钮,而前端没有禁用,导致发送两次重复请求。

1. 实现原理

幂等性要求参数相同的方法在一定时间内,只能执行一次。本质上是基于redis的分布式锁。大体有以下步骤:

  • 方法执行前,利用MD5算法(不仅限于此),将方法名 + 方法参数计算获得一个key
  • 查询redis的key是否存在
    • 存在,则不执行方法
    • 不存在,将key存到redis,并设置过期时间,接着执行方法
  • 需要注意方法执行的时间不能超过过期时间

2.使用示例

在Controller添加@Idempotent注解即可。

3. @Idempotent注解

  1. DefaultIdempotentKeyResolver默认的key解析器
public class DefaultIdempotentKeyResolver implements IdempotentKeyResolver {@Overridepublic String resolver(JoinPoint joinPoint, Idempotent idempotent) {// 获得方法名String methodName = joinPoint.getSignature().toString();// 将参数拼接成字符串String argsStr = StrUtil.join(",", joinPoint.getArgs());// md5计算一个keyreturn SecureUtil.md5(methodName + argsStr);}}
  1. 对应AOP切面类IdempotentAspect
    核心代码如下:
  2. 生成的key加了前缀“idempotent”,参看IdempotentRedisDAO。

4. debug过程


进入resolver方法里面

更多推荐

幂等性(防重复提交)

本文发布于:2023-11-16 14:32:53,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1624624.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!