springboot 防抖操作

大佬的代码:看这里

原理:

通过aop切面编程,在调用接口前缓存接口信息,将信息缓存到redis中,在规定时间内重复调用接口,会被拦截请求

有个地方感觉不太合理,在使用中我将其修改了

java 复制代码
	//前略
public class PreventAop {
	
	public String getToken(){
		//该方法仅作参考
		return sra.getRequest().getHeader("Authorization");
	}
	
private void defaultHandle(String token, Prevent prevent,String methodFullName) throws Exception {
		
        long expire = Long.parseLong(prevent.value());
		//此处改为将token作为凭据,避免不通账号调用同一接口导致请求被拦截
        String resp = redisUtil.get(methodFullName+token);
        if (StringUtils.isEmpty(resp)) {
            redisUtil.set(methodFullName+token, requestStr, expire);
        } else {
            String message = !StringUtils.isEmpty(prevent.message()) ? prevent.message() :
                    expire + "秒内不允许重复请求";
            throw new BusinessException(message);
        }
    }
}
相关推荐
weisian1512 分钟前
Java并发编程--29-分布式ID的6种方案:从单机到分库分表的“身份证”设计
java·分布式·雪花算法·美团leaf·百度uid
美式请加冰7 分钟前
最短路径问题
java·数据结构·算法
小江的记录本7 分钟前
【JEECG Boot】 JEECG Boot 数据字典管理——六大核心功能(内含:《JEECG Boot 数据字典开发速查清单》)
java·前端·数据库·spring boot·后端·spring·mybatis
小江的记录本7 分钟前
【JEECG Boot】 JEECG Boot——Online表单 系统性知识体系全解
java·前端·spring boot·后端·spring·低代码·mybatis
都说名字长不会被发现9 分钟前
Spring 线程池最佳实践:如何优雅管理多线程任务
java·spring·线程池·并发编程
wok15710 分钟前
WebMVC 和 WebFlux 架构选型
java·spring·架构·mvc
WangJunXiang613 分钟前
初识Flask框架
后端·python·flask
无限进步_16 分钟前
【C++】反转字符串的进阶技巧:每隔k个字符反转k个
java·开发语言·c++·git·算法·github·visual studio
希望永不加班17 分钟前
SpringBoot 邮件发送:文本邮件与 HTML 邮件
java·spring boot·后端·spring·html
菜菜小狗的学习笔记21 分钟前
八股(一)Java基础
java·开发语言