疯狂的狮子li
2021-06-04 f087b37cb32b84ae841fc409ea00ed2f729d9c8e
update 优化 锁切面代码 key到常量类
已修改2个文件
20 ■■■■■ 文件已修改
ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RedisLockAspect.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
@@ -2,7 +2,7 @@
/**
 * 通用常量信息
 *
 *
 * @author ruoyi
 */
public class Constants
@@ -126,4 +126,9 @@
     * 资源映射路径 前缀
     */
    public static final String RESOURCE_PREFIX = "/profile";
    /**
     * 资源映射路径 前缀
     */
    public static final String REDIS_LOCK_KEY = "redis_lock:";
}
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RedisLockAspect.java
@@ -2,6 +2,7 @@
import com.ruoyi.common.annotation.RedisLock;
import com.ruoyi.common.constant.Constants;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
@@ -34,8 +35,6 @@
    @Autowired
    private RedissonClient redissonClient;
    private static final String LOCK_TITLE = "RedisLock_";
    @Pointcut("@annotation(com.ruoyi.common.annotation.RedisLock)")
    public void annotationPointcut() {
    }
@@ -67,6 +66,8 @@
            throw new RuntimeException("redis分布式锁注解参数异常", e);
        }
        // 声明锁名称
        key = Constants.REDIS_LOCK_KEY + key;
        Object res;
        try {
            if (acquire(key, expireTime, TimeUnit.SECONDS)) {
@@ -136,8 +137,6 @@
     * 加锁(RLock)带超时时间的
     */
    private boolean acquire(String key, long expire, TimeUnit expireUnit) {
        //声明key对象
        key = LOCK_TITLE + key;
        try {
            //获取锁对象
            RLock mylock = redissonClient.getLock(key);
@@ -155,13 +154,11 @@
     * 锁的释放
     */
    private void release(String lockName) {
        //必须是和加锁时的同一个key
        String key = LOCK_TITLE + lockName;
        //获取所对象
        RLock mylock = redissonClient.getLock(key);
        RLock mylock = redissonClient.getLock(lockName);
        //释放锁(解锁)
        mylock.unlock();
        log.info("unlock => key : " + key + " , ThreadName : " + Thread.currentThread().getName());
        log.info("unlock => key : " + lockName + " , ThreadName : " + Thread.currentThread().getName());
    }
}