AOP的使用:
1.标注@Aspect,说明此类是切面类。
可以先用@Pointcut定义一个表达式。然后在@Around中引用这个@Pointcut的方法。
更常见的是直接在Around里面定义。
@Around("@annotation(注解的位置)")
@anootation:注解带有xxx的。
@args:参数带有xxx的。
@within/@target:标识生效的具体类型,多个参数&&起来。
AnnotationUtils.findAnnotation : 从方法中获取注解,查询是否有我们自定义注解。
如果为空,返回执行被调用方法。如果不为空判断是否上锁。
通过stringRedisTemplate.opsForValue().setIfAbsent 进行判断,这个方法仅在为空的时候设置,如果为true则设置成功,执行调用的方法,执行完毕后删除redis锁。如果不成功
这说明已经存在,无法再次调用 这里用了finally,不管方法执行结果如何,最终是一定要保证删除key