RedisLock的AOP实现
问题:
两次点击过快导致新增操作插入相同数据。
AOP的使用:
1.标注@Aspect,说明此类是切面类。
可以先用@Pointcut定义一个表达式。然后在@Around中引用这个@Pointcut的方法。
更常见的是直接在Around里面定义。
@Around("@annotation(注解的位置)")
@anootation:注解带有xxx的。
@args:参数带有xxx的。
@within/@target:标识生效的具体类型,多个参数&&起来。
AnnotationUtils.findAnnotation : 从方法中获取注解,查询是否有我们自定义注解。
如果为空,返回执行被调用方法。如果不为空判断是否上锁。
通过stringRedisTemplate.opsForValue().setIfAbsent 进行判断,这个方法仅在为空的时候设置,如果为true则设置成功,执行调用的方法,执行完毕后删除redis锁。如果不成功
这说明已经存在,无法再次调用 这里用了finally,不管方法执行结果如何,最终是一定要保证删除key
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
2022-01-18 近期计划
2022-01-18 设计模式