From bb2ade75a82d768db99a46cff54eecc0b67d4de0 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期三, 16 六月 2021 15:38:44 +0800 Subject: [PATCH] update 升级 hutool 5.7.1 适配工具类 --- ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RedisLockAspect.java | 48 +++++++++--------------------------------------- 1 files changed, 9 insertions(+), 39 deletions(-) diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RedisLockAspect.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RedisLockAspect.java index 0ff695f..efe628f 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RedisLockAspect.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RedisLockAspect.java @@ -2,14 +2,14 @@ import com.ruoyi.common.annotation.RedisLock; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.core.redis.RedisLockManager; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; -import org.redisson.api.RLock; -import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; @@ -32,9 +32,7 @@ public class RedisLockAspect { @Autowired - private RedissonClient redissonClient; - - private static final String LOCK_TITLE = "RedisLock_"; + private RedisLockManager redisLockManager; @Pointcut("@annotation(com.ruoyi.common.annotation.RedisLock)") public void annotationPointcut() { @@ -67,16 +65,20 @@ throw new RuntimeException("redis鍒嗗竷寮忛攣娉ㄨВ鍙傛暟寮傚父", e); } + // 澹版槑閿佸悕绉� + key = Constants.REDIS_LOCK_KEY + key; Object res; try { - if (acquire(key, expireTime, TimeUnit.SECONDS)) { + if (redisLockManager.getLock(key, expireTime, TimeUnit.SECONDS)) { + log.info("lock => key : " + key + " , ThreadName : " + Thread.currentThread().getName()); try { res = joinPoint.proceed(); return res; } catch (Exception e) { throw new RuntimeException(e); } finally { - release(key); + redisLockManager.unLock(key); + log.info("unlock => key : " + key + " , ThreadName : " + Thread.currentThread().getName()); } } else { throw new RuntimeException("redis鍒嗗竷寮忛攣娉ㄨВ鍙傛暟寮傚父"); @@ -130,38 +132,6 @@ } } return listPar; - } - - /** - * 鍔犻攣锛圧Lock锛夊甫瓒呮椂鏃堕棿鐨� - */ - private boolean acquire(String key, long expire, TimeUnit expireUnit) { - //澹版槑key瀵硅薄 - key = LOCK_TITLE + key; - try { - //鑾峰彇閿佸璞� - RLock mylock = redissonClient.getLock(key); - //鍔犻攣锛屽苟涓旇缃攣杩囨湡鏃堕棿锛岄槻姝㈡閿佺殑浜х敓 - mylock.tryLock(expire, expire, expireUnit); - } catch (InterruptedException e) { - return false; - } - log.info("lock => key : " + key + " , ThreadName : " + Thread.currentThread().getName()); - //鍔犻攣鎴愬姛 - return true; - } - - /** - * 閿佺殑閲婃斁 - */ - private void release(String lockName) { - //蹇呴』鏄拰鍔犻攣鏃剁殑鍚屼竴涓猭ey - String key = LOCK_TITLE + lockName; - //鑾峰彇鎵�瀵硅薄 - RLock mylock = redissonClient.getLock(key); - //閲婃斁閿侊紙瑙i攣锛� - mylock.unlock(); - log.info("unlock => key : " + key + " , ThreadName : " + Thread.currentThread().getName()); } } -- Gitblit v1.9.3