From dd25573ebce3450d90d0012a30b12a5185bc7310 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期五, 08 七月 2022 15:49:15 +0800 Subject: [PATCH] update 使用 @param 注释替换 @Parameter 注解 fix 修复 token 无法传递 与 无法持久化问题 --- ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisLockController.java | 82 +++++++++++++++++++++++++---------------- 1 files changed, 50 insertions(+), 32 deletions(-) diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisLockController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisLockController.java index b872a5f..69d231d 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisLockController.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisLockController.java @@ -1,14 +1,18 @@ package com.ruoyi.demo.controller; -import com.ruoyi.common.core.domain.AjaxResult; -import com.ruoyi.common.core.redis.RedisLockManager; -import com.ruoyi.demo.service.ITestDemoService; +import com.baomidou.lock.LockInfo; +import com.baomidou.lock.LockTemplate; +import com.baomidou.lock.annotation.Lock4j; +import com.baomidou.lock.executor.RedissonLockExecutor; +import com.ruoyi.common.core.domain.R; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cache.annotation.Cacheable; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; + +import java.time.LocalTime; /** @@ -16,40 +20,54 @@ * * @author shenxinquan */ +@Tag(name = "娴嬭瘯鍒嗗竷寮忛攣鐨勬牱渚�", description = "娴嬭瘯鍒嗗竷寮忛攣鐨勬牱渚�") @Slf4j @RestController @RequestMapping("/demo/redisLock") public class RedisLockController { - @Autowired - private ITestDemoService testDemoService; + @Autowired + private LockTemplate lockTemplate; - /** - * 娴嬭瘯lock4j - * @param key - * @param value - * @return - */ - @GetMapping("/testLock4j") - public AjaxResult<String> testLock4j(String key,String value){ - testDemoService.testLock4j(key); - return AjaxResult.success("鎿嶄綔鎴愬姛",value); - } - @GetMapping("/testLock4jLockTemaplate") - public AjaxResult<String> testLock4jLockTemaplate(String key,String value){ - testDemoService.testLock4jLockTemaplate(key); - return AjaxResult.success("鎿嶄綔鎴愬姛",value); - } + /** + * 娴嬭瘯lock4j 娉ㄨВ + */ + @Lock4j(keys = {"#key"}) + @GetMapping("/testLock4j") + public R<String> testLock4j(String key, String value) { + System.out.println("start:" + key + ",time:" + LocalTime.now().toString()); + try { + Thread.sleep(10000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.out.println("end :" + key + ",time:" + LocalTime.now().toString()); + return R.ok("鎿嶄綔鎴愬姛", value); + } + /** + * 娴嬭瘯lock4j 宸ュ叿 + */ + @GetMapping("/testLock4jLockTemplate") + public R<String> testLock4jLockTemplate(String key, String value) { + final LockInfo lockInfo = lockTemplate.lock(key, 30000L, 5000L, RedissonLockExecutor.class); + if (null == lockInfo) { + throw new RuntimeException("涓氬姟澶勭悊涓�,璇风◢鍚庡啀璇�"); + } + // 鑾峰彇閿佹垚鍔燂紝澶勭悊涓氬姟 + try { + try { + Thread.sleep(8000); + } catch (InterruptedException e) { + // + } + System.out.println("鎵ц绠�鍗曟柟娉�1 , 褰撳墠绾跨▼:" + Thread.currentThread().getName()); + } finally { + //閲婃斁閿� + lockTemplate.releaseLock(lockInfo); + } + //缁撴潫 + return R.ok("鎿嶄綔鎴愬姛", value); + } - - - /** - * 娴嬭瘯spring-cache娉ㄨВ - */ - @Cacheable(value = "test", key = "#key") - @GetMapping("/testCache") - public AjaxResult<String> testCache(String key) { - return AjaxResult.success("鎿嶄綔鎴愬姛", key); - } } -- Gitblit v1.9.3