java 接口幂等性

在特殊情况(网络卡顿,用户连点,机器卡顿等)下,新增动作中多次新增请求最后保证只有一条数据录入,当再次进入新增页面后才可以再次新增。

1. 数据库根据唯一id,删除动作和更新动作是默认幂等性的;
2. 前端点击后置灰,或只允许点击一次;
3. 切面根据permisionType区分是否管控新增;
4. 在进入(商品)新增页面时,数据库先删除该用户原允许新增的判断数据,然后再次新增一条允许新增的判定数据,即保持该用户有且只有一条允许新增的判定数据;
5. 用户填写完数据后,第一次点击确认新增按钮,即删除该用户的判定数据,如果多次请求(多次连点,http失败的再次请求)均不在允许一次动作的第二次新增。
@Idempotent
import java.lang.annotation.*;
//如果一个类用上了@Inherited修饰的注解,那么其子类也会继承这个注解
@Inherited
//注解的生命周期,表示注解会被保留到什么阶段,可以选择编译阶段、类加载阶段,或运行阶段
@Retention(RetentionPolicy.RUNTIME)
//注解作用的位置,ElementType.METHOD表示该注解仅能作用于方法上
@Target({ElementType.METHOD})
public @interface Idempotent {
}

概念:

在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。
幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。
这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。
例如,“getUsername()和setTrue()”函数就是一个幂等函数.更复杂的操作幂等保证是利用唯一交易号(流水号)实现.

通俗讲:幂等就是一个操作,不论执行多少次,产生的效果和返回的结果都是一样的。