From ad18449753e6db2e1fdd620ea4796b8e98afad1e Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期一, 24 一月 2022 13:00:38 +0800 Subject: [PATCH] update 重构 使用 Spring 简化 oss 模块代码 --- ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java | 42 ++++++++++++++++++++---------------------- 1 files changed, 20 insertions(+), 22 deletions(-) diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java index 0107955..9ac887e 100644 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java +++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java @@ -3,7 +3,7 @@ import com.ruoyi.common.utils.JsonUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.redis.RedisUtils; -import com.ruoyi.common.utils.reflect.ReflectUtils; +import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.oss.constant.OssConstant; import com.ruoyi.oss.enumd.OssEnumd; import com.ruoyi.oss.exception.OssException; @@ -11,9 +11,6 @@ import com.ruoyi.oss.service.IOssStrategy; import com.ruoyi.oss.service.abstractd.AbstractOssStrategy; import lombok.extern.slf4j.Slf4j; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; /** * 鏂囦欢涓婁紶Factory @@ -24,19 +21,15 @@ public class OssFactory { /** - * 鏈嶅姟瀹炰緥缂撳瓨 - */ - private static final Map<String, IOssStrategy> SERVICES = new ConcurrentHashMap<>(); - - /** * 鍒濆鍖栧伐鍘� */ public static void init() { log.info("鍒濆鍖朞SS宸ュ巶"); RedisUtils.subscribe(OssConstant.CACHE_CONFIG_KEY, String.class, type -> { - // 娌℃湁鐨勫疄渚嬩笉澶勭悊 - if (SERVICES.containsKey(type)) { - refreshService(type); + AbstractOssStrategy strategy = getStrategy(type); + // 鏈垵濮嬪寲涓嶅鐞� + if (strategy.isInit) { + refresh(type); log.info("璁㈤槄鍒锋柊OSS閰嶇疆 => " + type); } }); @@ -58,24 +51,29 @@ * 鏍规嵁绫诲瀷鑾峰彇瀹炰緥 */ public static IOssStrategy instance(String type) { - IOssStrategy service = SERVICES.get(type); - if (service == null) { - refreshService(type); - service = SERVICES.get(type); + OssEnumd enumd = OssEnumd.find(type); + if (enumd == null) { + throw new OssException("鏂囦欢瀛樺偍鏈嶅姟绫诲瀷鏃犳硶鎵惧埌!"); } - return service; + AbstractOssStrategy strategy = getStrategy(type); + if (!strategy.isInit) { + refresh(type); + } + return strategy; } - private static void refreshService(String type) { + private static void refresh(String type) { Object json = RedisUtils.getCacheObject(OssConstant.SYS_OSS_KEY + type); OssProperties properties = JsonUtils.parseObject(json.toString(), OssProperties.class); if (properties == null) { throw new OssException("绯荤粺寮傚父, '" + type + "'閰嶇疆淇℃伅涓嶅瓨鍦�!"); } - // 鑾峰彇redis閰嶇疆淇℃伅 鍒涘缓瀵硅薄 骞剁紦瀛� - IOssStrategy service = (IOssStrategy) ReflectUtils.newInstance(OssEnumd.getServiceClass(type)); - ((AbstractOssStrategy) service).init(properties); - SERVICES.put(type, service); + getStrategy(type).init(properties); + } + + private static AbstractOssStrategy getStrategy(String type) { + OssEnumd enumd = OssEnumd.find(type); + return (AbstractOssStrategy) SpringUtils.getBean(enumd.getBeanClass()); } } -- Gitblit v1.9.3