update 优化OssFactory

This commit is contained in:
mercurialx 2024-01-22 09:57:58 +08:00 committed by lx
parent 9766f61cf8
commit c909f8c90c

View File

@ -39,7 +39,7 @@ public class OssFactory {
/** /**
* 根据类型获取实例 * 根据类型获取实例
*/ */
public static synchronized OssClient instance(String configKey) { public static OssClient instance(String configKey) {
String json = CacheUtils.get(CacheNames.SYS_OSS_CONFIG, configKey); String json = CacheUtils.get(CacheNames.SYS_OSS_CONFIG, configKey);
if (json == null) { if (json == null) {
throw new OssException("系统异常, '" + configKey + "'配置信息不存在!"); throw new OssException("系统异常, '" + configKey + "'配置信息不存在!");
@ -47,19 +47,18 @@ public class OssFactory {
OssProperties properties = JsonUtils.parseObject(json, OssProperties.class); OssProperties properties = JsonUtils.parseObject(json, OssProperties.class);
// 使用租户标识避免多个租户相同key实例覆盖 // 使用租户标识避免多个租户相同key实例覆盖
String key = properties.getTenantId() + ":" + configKey; String key = properties.getTenantId() + ":" + configKey;
OssClient client = CLIENT_CACHE.get(key); return CLIENT_CACHE.compute(key, (k, client) -> {
if (client == null) { if (client == null) {
CLIENT_CACHE.put(key, new OssClient(configKey, properties)); log.info("创建OSS实例 key => {}", configKey);
log.info("创建OSS实例 key => {}", configKey); return new OssClient(configKey, properties);
return CLIENT_CACHE.get(key); }
} if (!client.checkPropertiesSame(properties)) {
// 配置不相同则重新构建 // 配置不相同则重新构建
if (!client.checkPropertiesSame(properties)) { log.info("重载OSS实例 key => {}", configKey);
CLIENT_CACHE.put(key, new OssClient(configKey, properties)); return new OssClient(configKey, properties);
log.info("重载OSS实例 key => {}", configKey); }
return CLIENT_CACHE.get(key); return client;
} });
return client;
} }
} }