这篇文章主要介绍了Java注解如何基于Redission实现分布式锁,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
1、定义注解类
@Target({ ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DistributedLock {
//锁名称
String lockName() default "";
//释放时间
long releaseTime() default 5*1000;
//时间单位
TimeUnit timeUnit() default TimeUnit.MILLISECONDS;
}
2、定义切面拦截 DistributedLock 注解
@Aspect
@Component
@Slf4j
public class DistributedLockAspect {
@Autowired
private RedissonClient redissonClient;
//这里需要修改对应的包名
@Pointcut("@annotation(com.utils.annotation.DistributedLock)")
public void RlockAspect() {
}
@Around("RlockAspect()")
public Object arround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
Object object = null;
RLock lock = null;
log.info("rlockAspect start ");
try {
DistributedL