域名 备案号 网站的关系,宁波专业网站建设怎么做,网站建设流程有,深网网站文章目录 1. 实现原理2.使用示例3. Idempotent注解4. debug过程 主要用途#xff1a;防止用户快速双击某个按钮#xff0c;而前端没有禁用#xff0c;导致发送两次重复请求。
1. 实现原理
幂等性要求参数相同的方法在一定时间内#xff0c;只能执行一次。本质上是基于red… 文章目录 1. 实现原理2.使用示例3. Idempotent注解4. debug过程 主要用途防止用户快速双击某个按钮而前端没有禁用导致发送两次重复请求。
1. 实现原理
幂等性要求参数相同的方法在一定时间内只能执行一次。本质上是基于redis的分布式锁。大体有以下步骤
方法执行前利用MD5算法不仅限于此将方法名 方法参数计算获得一个key查询redis的key是否存在 存在则不执行方法不存在将key存到redis并设置过期时间接着执行方法 需要注意方法执行的时间不能超过过期时间
2.使用示例
在Controller添加Idempotent注解即可。
3. Idempotent注解 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);}}
对应AOP切面类IdempotentAspect 核心代码如下 生成的key加了前缀“idempotent”参看IdempotentRedisDAO。
4. debug过程 进入resolver方法里面