基于 Spring Boot + Redisson 的分布式幂等性组件,通过注解声明式地为接口添加幂等控制,防止重复请求。
- 注解驱动:在方法上添加
@Idempotent注解即可启用幂等控制 - 多种幂等类型:
PARAM— 基于请求参数生成幂等键(默认)TOKEN— 基于 Token 令牌机制CUSTOM— 自定义幂等处理器
- 灵活的拒绝策略:
REJECTED— 直接拒绝重复请求(默认)WAIT— 等待前一个请求完成后再执行CUSTOM— 自定义拒绝策略
- 分布式锁:基于 Redisson 实现,支持分布式环境
- 细粒度 Key 控制:通过
@KeyBody、@KeyParam、@KeyProperty注解精确指定幂等键的生成字段
- Java 17
- Spring Boot 3.0
- Redisson(分布式锁)
- AspectJ(AOP 切面)
@PostMapping("/order")
@Idempotent(type = IdempotentTypeEnum.PARAM, message = "订单正在处理中,请勿重复提交")
public Result createOrder(@KeyBody Order order) {
// 业务逻辑
}src/main/java/cn/ken/idempotent/
├── annotations/ # 注解定义(@Idempotent, @KeyBody, @KeyParam, @KeyProperty)
├── autoconfigure/ # Spring Boot 自动配置
├── core/ # 核心逻辑(AOP 切面、上下文、处理器工厂)
├── enums/ # 枚举(幂等类型、拒绝策略)
├── handler/ # 幂等处理器(参数型、Token 型)
├── exceptions/ # 异常定义
└── demo/ # 使用示例