From 7102d7a56167d3f1ed5702c4da2199127e278803 Mon Sep 17 00:00:00 2001 From: ruying408 <1877972603@qq.com> Date: Sun, 25 Aug 2024 22:43:40 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4:=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E5=B7=A5=E5=85=B7=E7=B1=BB=20=E8=B0=83?= =?UTF-8?q?=E6=95=B4:=20=E4=BC=98=E5=8C=96=E6=8F=92=E4=BB=B6=E6=8F=90?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/cool/core/cache/CoolCache.java | 25 +++++++++++++++++++ .../cool/core/util/CoolPluginInvokers.java | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cool/core/cache/CoolCache.java b/src/main/java/com/cool/core/cache/CoolCache.java index 38ef40b..27ddd76 100644 --- a/src/main/java/com/cool/core/cache/CoolCache.java +++ b/src/main/java/com/cool/core/cache/CoolCache.java @@ -60,6 +60,13 @@ public class CoolCache { } } + /** + * 数据来源 + */ + public static interface ToCacheData { + Object apply(); + } + /** * 删除缓存 * @@ -87,6 +94,24 @@ public class CoolCache { return ifNullValue; } + /** + * 普通缓存获取 + * + * @param key 键 + */ + public Object get(String key, Duration duration, ToCacheData toCacheData) { + Object ifNullValue = getIfNullValue(key); + if (ObjUtil.equals(ifNullValue, NULL_VALUE)) { + return null; + } + if (ObjUtil.isEmpty(ifNullValue)) { + Object obj = toCacheData.apply(); + set(key, obj, duration.toSeconds()); + return obj; + } + return ifNullValue; + } + private Object getIfNullValue(String key) { if (type.equalsIgnoreCase(CacheType.CAFFEINE.name())) { Cache.ValueWrapper valueWrapper = cache.get(key); diff --git a/src/main/java/com/cool/core/util/CoolPluginInvokers.java b/src/main/java/com/cool/core/util/CoolPluginInvokers.java index 6adfb88..2a2fdf2 100644 --- a/src/main/java/com/cool/core/util/CoolPluginInvokers.java +++ b/src/main/java/com/cool/core/util/CoolPluginInvokers.java @@ -64,7 +64,7 @@ public class CoolPluginInvokers { */ public static Object invoke(String key, String methodName, Object... params) { Object beanInstance = dynamicJarLoaderService.getBeanInstance(key); - CoolPreconditions.checkEmpty(beanInstance, "未找到该插件:" + key); + CoolPreconditions.checkEmpty(beanInstance, "未找到该插件:{}, 请前往插件市场进行安装",key); ClassLoader originalClassLoader = Thread.currentThread().getContextClassLoader(); try { // 设置当前线程的上下文类加载器为插件的类加载器