java幂等性处理

幂等性定义

业务逻辑执行一次和执行多次的结果始终都是一样的 , 例如 把id为1的用户的年龄改成18岁 ,不管这个逻辑执行多少次 ,最终的年龄始终是18

哪些语句是幂等的

  • select语句是天然幂等的
  • update语句 修改成固定值是天然幂等的 如 update table set age=18 where id=1 , 变量值修改不是幂等的 ,如 update table set age=age+1 where id=1
  • delect语句是天然幂等的
  • insert不是幂等的

幂等性出现的场景

  1. 表单重复提交
  2. 变量值修改多次

幂等性解决方案

token机制 (适用于insert , update语句)
乐观锁 (适用于update语句)
数据库唯一索引 (适用于insert语句)
Java中设计幂等性接口,可以使用自定义注解来实现。可以参考引用中的自定义注解`@Idempotent`。这个注解可以应用在方法上,用于标识该方法是否需要实现幂等性。注解中的属性包括: - `isIdempotent`: 用于指示是否需要对该方法进行幂等性处理,默认为false,表示不需要处理。 - `expireTime`: 用于指定幂等性的有效期,单位为秒,默认为1秒。这个有效期要大于方法执行的时间,以确保在有效期内重复的请求不会被处理。 - `timeUnit`: 用于指定有效期的时间单位,默认为秒。 - `info`: 用于指定提示信息,可以自定义,默认为"重复请求,请稍后重试"。 - `delKey`: 用于指示在业务完成后是否删除幂等性处理所使用的key,默认为false,表示不删除。 通过在需要实现幂等性的方法上添加`@Idempotent`注解,并根据业务需求配置相应的属性,可以实现对接口的幂等性处理。这样,在重复的请求中,系统可以根据幂等性处理逻辑返回同一个结果或报错,以避免对系统资源的重复影响。123 #### 引用[.reference_title] - *1* *2* *3* [【技术应用】java接口幂等性实现方案](https://blog.csdn.net/weixin_37598243/article/details/128403043)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值