java接口防重复提交简单有效的解决方案

2024-04-28 19:36

本文主要是介绍java接口防重复提交简单有效的解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

场景:
在实际业务场景中,有些关键接口不允许重复多次提交,例如订单提交、xx发布等接口,一旦重复提交可能会导致很多问题,此时就要做接口防重提限制。下面介绍一个简单的方案

一、创建防重提专用的注解

@Target(value = {ElementType.METHOD, ElementType.TYPE})
@Retention(value = RetentionPolicy.RUNTIME)
public @interface AccessLimit {//key前缀String keyPrefix() default "avoid_repeat_submit";//允许请求上限数量int maxCount() default 1;//过期时间int expireTime() default 3;//过期单位TimeUnit timeUnit() default TimeUnit.SECONDS;}

二、创建切面类,拦截处理校验

1、实现思路,首次请求则设置缓存标识并标记次数为1,随后每次请求只要没达到上限限制数量,则标记次数增量+1,达到上限次数则报错提示

2、代码示例

@Slf4j
@Component
@Aspect
public class AccessLimitAspect {@Resourceprivate RedisTemplate<String, Object> redisTemplate;@Poin

这篇关于java接口防重复提交简单有效的解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/944079

相关文章

docker-java 操作docker

部署docker 10分钟学会Docker的安装和使用_docker安装-CSDN博客文章浏览阅读2.5w次,点赞44次,收藏279次。文章目录Docker简介Docker安装Windows安装Linux安装CentOS安装Ubuntu安装最近花了些时间学习docker技术相关,在此做一些总结,供往后复查和像了解docker的学习。Docker简介简而言之,Docker 是一个可供开发者通过

2.25学习内容,小米平板开发选项,linux cpu信息,安卓图片简单缩放移动

小米平板开发选项是默认关闭的,想要开启对着MIUI版本连续点击,大概是7下,就会出来开发者选项。 在回到设置找一招就能找到该选项。 linux cpu信息以文件形式保存。 /proc/cpuinfo 原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明以下出处,否则追究版权法律责任。 深蓝的blog:http://blog.csdn.net/huangy

2.12学习内容 责任链,HashSet去除重复数据原理

public class Main { public static void main(String[] args) { Support evan=new HR("人力Evan"); Support kaka=new ZuZhang("组长kaka", 100);//组长最多能解决提高工资100的问题 Support bingbing=new JingLi("经理bingbing",

2.10学习笔记 java任务调度

http://www.ibm.com/developerworks/cn/java/j-lo-taskschedule/ java任务调度可以使用: Timer ScheduledExecutor 开源工具包 Quartz 开源工具包 JCronTab以上是根据时间定时执行的,下面有一个简单的不断读栈线程并执行的调度: http://lavasoft.blog.51cto.com

8.16 lru缓存java版

lru详细介绍及简单代码实现: http://blog.csdn.net/beiyetengqing/article/details/7855933 以下是本人的加强的lru缓存类,增加单例获取、缓存超时机制和修复一个clear()的bug package com.george.xblog.utils;import java.util.Hashtable;import java.util.

8.3facebook分享后不回调结果原因,java标签代码

facebook分享后不回调原因 出现原因: android:launchMode=”singleInstance” 加载方式不允许重新创建。 修改成: android:launchMode=”singleTask” java标签可以跳出指定位置 package com.ping;public class lhkgdf {public static void main(String[

SpringBoot解析MyBatis预编译SQL

pom.xml <profile><!-- 开发环境 --><id>dev</id><activation><!-- 默认激活 --><activeByDefault>true</activeByDefault></activation><properties><spring.profiles.active>dev</spring.profiles.active></properties>

[转载]Java面试基础概念总结

面向对象软件开发的优点有哪些? 答:开发模块化,更易维护和修改;代码之间可以复用;增强代码的可靠性、灵活性和可理解性。多态的定义? 答:多态是编程语言给不同的底层数据类型做相同的接口展示的一种能力。一个多态类型上的操作可以应用到其他类型的值上面。继承的定义? 答:继承给对象提供了从基类获取字段和方法的能力。继承提供了代码的重用行,也可以在不修改类的情况下给现存的类添加新特性抽象的定义?抽象和

java并发编程ThreadLocal的使用

ThreadLocal与synchronized 有着相反的概念,前者在多线程使用时会创建新的对象,后者保证对象在多线程是唯一的。 看代码好理解: public class Test {ThreadLocal<Long> longLocal = new ThreadLocal<Long>();ThreadLocal<String> stringLocal = new ThreadLocal

android程序内多语言切换不需要重新启动的解决方案

关于android程序内的的多语言切换,一般能搜索到这段代码: public void switchLanguage(Locale locale) {Configuration config = getResources().getConfiguration();// 获得设置对象Resources resources = getResources();// 获得res资源对象Displ