mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-09-21 02:25:56 +08:00
update 重构 OssFactory 加载方式 改为每次比对配置做实例更新
This commit is contained in:
parent
0dc2d24c88
commit
6b66d1441c
@ -183,6 +183,12 @@ public class OssClient {
|
|||||||
return configKey;
|
return configKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取私有URL链接
|
||||||
|
*
|
||||||
|
* @param objectKey 对象KEY
|
||||||
|
* @param second 授权时间
|
||||||
|
*/
|
||||||
public String getPrivateUrl(String objectKey, Integer second) {
|
public String getPrivateUrl(String objectKey, Integer second) {
|
||||||
GeneratePresignedUrlRequest generatePresignedUrlRequest =
|
GeneratePresignedUrlRequest generatePresignedUrlRequest =
|
||||||
new GeneratePresignedUrlRequest(properties.getBucketName(), objectKey)
|
new GeneratePresignedUrlRequest(properties.getBucketName(), objectKey)
|
||||||
@ -192,6 +198,13 @@ public class OssClient {
|
|||||||
return url.toString();
|
return url.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查配置是否相同
|
||||||
|
*/
|
||||||
|
public boolean checkPropertiesSame(OssProperties properties) {
|
||||||
|
return this.properties.equals(properties);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取当前桶权限类型
|
* 获取当前桶权限类型
|
||||||
*
|
*
|
||||||
|
|||||||
@ -24,21 +24,6 @@ public class OssFactory {
|
|||||||
|
|
||||||
private static final Map<String, OssClient> CLIENT_CACHE = new ConcurrentHashMap<>();
|
private static final Map<String, OssClient> 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) {
|
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);
|
String json = CacheUtils.get(CacheNames.SYS_OSS_CONFIG, configKey);
|
||||||
if (json == null) {
|
if (json == null) {
|
||||||
throw new OssException("系统异常, '" + configKey + "'配置信息不存在!");
|
throw new OssException("系统异常, '" + configKey + "'配置信息不存在!");
|
||||||
}
|
}
|
||||||
OssProperties properties = JsonUtils.parseObject(json, OssProperties.class);
|
OssProperties properties = JsonUtils.parseObject(json, OssProperties.class);
|
||||||
|
OssClient client = CLIENT_CACHE.get(configKey);
|
||||||
|
if (client == null) {
|
||||||
CLIENT_CACHE.put(configKey, new OssClient(configKey, properties));
|
CLIENT_CACHE.put(configKey, new OssClient(configKey, properties));
|
||||||
}
|
log.info("创建OSS实例 key => {}", configKey);
|
||||||
|
|
||||||
private static OssClient getClient(String configKey) {
|
|
||||||
return CLIENT_CACHE.get(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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user