From 6b66d1441c5a17c5c7452d1a8a6733e80671c130 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90li?= <15040126243@163.com> Date: Tue, 14 Feb 2023 17:41:15 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E9=87=8D=E6=9E=84=20OssFactory=20?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E6=96=B9=E5=BC=8F=20=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E6=AF=8F=E6=AC=A1=E6=AF=94=E5=AF=B9=E9=85=8D=E7=BD=AE=E5=81=9A?= =?UTF-8?q?=E5=AE=9E=E4=BE=8B=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/common/oss/core/OssClient.java | 13 ++++++ .../ruoyi/common/oss/factory/OssFactory.java | 42 ++++++------------- 2 files changed, 26 insertions(+), 29 deletions(-) diff --git a/ruoyi-common/ruoyi-common-oss/src/main/java/com/ruoyi/common/oss/core/OssClient.java b/ruoyi-common/ruoyi-common-oss/src/main/java/com/ruoyi/common/oss/core/OssClient.java index 7a72a5dda..924efc19b 100644 --- a/ruoyi-common/ruoyi-common-oss/src/main/java/com/ruoyi/common/oss/core/OssClient.java +++ b/ruoyi-common/ruoyi-common-oss/src/main/java/com/ruoyi/common/oss/core/OssClient.java @@ -183,6 +183,12 @@ public class OssClient { return configKey; } + /** + * 获取私有URL链接 + * + * @param objectKey 对象KEY + * @param second 授权时间 + */ public String getPrivateUrl(String objectKey, Integer second) { GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(properties.getBucketName(), objectKey) @@ -192,6 +198,13 @@ public class OssClient { return url.toString(); } + /** + * 检查配置是否相同 + */ + public boolean checkPropertiesSame(OssProperties properties) { + return this.properties.equals(properties); + } + /** * 获取当前桶权限类型 * diff --git a/ruoyi-common/ruoyi-common-oss/src/main/java/com/ruoyi/common/oss/factory/OssFactory.java b/ruoyi-common/ruoyi-common-oss/src/main/java/com/ruoyi/common/oss/factory/OssFactory.java index 885c7be2e..82467efca 100644 --- a/ruoyi-common/ruoyi-common-oss/src/main/java/com/ruoyi/common/oss/factory/OssFactory.java +++ b/ruoyi-common/ruoyi-common-oss/src/main/java/com/ruoyi/common/oss/factory/OssFactory.java @@ -24,21 +24,6 @@ public class OssFactory { private static final Map CLIENT_CACHE = new ConcurrentHashMap<>(); - /** - * 初始化工厂 - */ - public static void init() { - log.info("初始化OSS工厂"); - RedisUtils.subscribe(OssConstant.DEFAULT_CONFIG_KEY, String.class, configKey -> { - OssClient client = getClient(configKey); - // 未初始化不处理 - if (client != null) { - refresh(configKey); - log.info("订阅刷新OSS配置 => " + configKey); - } - }); - } - /** * 获取默认实例 */ @@ -55,25 +40,24 @@ public class OssFactory { * 根据类型获取实例 */ public static OssClient instance(String configKey) { - OssClient client = getClient(configKey); - if (client == null) { - refresh(configKey); - return getClient(configKey); - } - return client; - } - - private static void refresh(String configKey) { String json = CacheUtils.get(CacheNames.SYS_OSS_CONFIG, configKey); if (json == null) { throw new OssException("系统异常, '" + configKey + "'配置信息不存在!"); } OssProperties properties = JsonUtils.parseObject(json, OssProperties.class); - CLIENT_CACHE.put(configKey, new OssClient(configKey, properties)); - } - - private static OssClient getClient(String configKey) { - return CLIENT_CACHE.get(configKey); + OssClient client = CLIENT_CACHE.get(configKey); + if (client == null) { + CLIENT_CACHE.put(configKey, new OssClient(configKey, properties)); + log.info("创建OSS实例 key => {}", configKey); + return CLIENT_CACHE.get(configKey); + } + // 配置不相同则重新构建 + if (!client.checkPropertiesSame(properties)) { + CLIENT_CACHE.put(configKey, new OssClient(configKey, properties)); + log.info("重载OSS实例 key => {}", configKey); + return CLIENT_CACHE.get(configKey); + } + return client; } }