From ea3d66fda39612fb0d87638b30f1b949a08f0d0c Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期三, 29 六月 2022 12:43:41 +0800
Subject: [PATCH] fix 修复 获取 SensitiveService 空问题 增加空兼容
---
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisLockController.java | 85 ++++++++++++++++++++++++++----------------
1 files changed, 53 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..c31925a 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,19 @@
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.annotations.Api;
+import io.swagger.annotations.ApiOperation;
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 +21,56 @@
*
* @author shenxinquan
*/
+@Api(value = "娴嬭瘯鍒嗗竷寮忛攣鐨勬牱渚�", tags = {"娴嬭瘯鍒嗗竷寮忛攣鐨勬牱渚�"})
@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 娉ㄨВ
+ */
+ @ApiOperation("娴嬭瘯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 宸ュ叿
+ */
+ @ApiOperation("娴嬭瘯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