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

posted @   NobodyHero  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
历史上的今天:
2022-01-18 近期计划
2022-01-18 设计模式
点击右上角即可分享
微信分享提示