mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-03-26 23:33:24 +08:00
update 优化 缩短oss模块命名
This commit is contained in:
@@ -4,12 +4,12 @@ import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.oss.config.S3StorageClientConfig;
|
||||
import org.dromara.common.oss.config.OssClientConfig;
|
||||
import org.dromara.common.oss.exception.S3StorageException;
|
||||
import org.dromara.common.oss.io.OutputStreamDownloadSubscriber;
|
||||
import org.dromara.common.oss.model.GetObjectResult;
|
||||
import org.dromara.common.oss.model.HandleAsyncResult;
|
||||
import org.dromara.common.oss.model.PutObjectResult;
|
||||
import org.dromara.common.oss.exception.S3StorageException;
|
||||
import org.dromara.common.oss.io.OutputStreamDownloadSubscriber;
|
||||
import software.amazon.awssdk.core.async.AsyncRequestBody;
|
||||
import software.amazon.awssdk.core.async.AsyncResponseTransformer;
|
||||
import software.amazon.awssdk.core.async.ResponsePublisher;
|
||||
@@ -46,7 +46,7 @@ import java.util.function.Function;
|
||||
* @author 秋辞未寒
|
||||
*/
|
||||
@Slf4j
|
||||
public abstract class AbstractS3StorageClientImpl implements S3StorageClient {
|
||||
public abstract class AbstractOssClientImpl implements OssClient {
|
||||
|
||||
private final AtomicBoolean initialized = new AtomicBoolean(false);
|
||||
|
||||
@@ -60,7 +60,7 @@ public abstract class AbstractS3StorageClientImpl implements S3StorageClient {
|
||||
/**
|
||||
* S3 存储客户端配置。
|
||||
*/
|
||||
protected S3StorageClientConfig config;
|
||||
protected OssClientConfig config;
|
||||
|
||||
/**
|
||||
* Amazon S3 异步客户端。
|
||||
@@ -82,7 +82,7 @@ public abstract class AbstractS3StorageClientImpl implements S3StorageClient {
|
||||
*/
|
||||
protected ExecutorService asyncExecutor;
|
||||
|
||||
public AbstractS3StorageClientImpl(String clientId, S3StorageClientConfig config) {
|
||||
public AbstractOssClientImpl(String clientId, OssClientConfig config) {
|
||||
Assert.notNull(config, () -> S3StorageException.form("S3StorageClientConfig must not be null"));
|
||||
// 如果没有设置存储客户端ID,则随机生成一个
|
||||
this.clientId = StringUtils.isBlank(clientId) ? IdUtil.fastSimpleUUID() : clientId;
|
||||
@@ -96,7 +96,7 @@ public abstract class AbstractS3StorageClientImpl implements S3StorageClient {
|
||||
}
|
||||
|
||||
@Override
|
||||
public S3StorageClientConfig config() {
|
||||
public OssClientConfig config() {
|
||||
// 仅返回copy副本,防篡改
|
||||
return this.config.copy();
|
||||
}
|
||||
@@ -127,7 +127,7 @@ public abstract class AbstractS3StorageClientImpl implements S3StorageClient {
|
||||
abstract void doInitialize();
|
||||
|
||||
@Override
|
||||
public void refresh(S3StorageClientConfig config) {
|
||||
public void refresh(OssClientConfig config) {
|
||||
if (Objects.equals(this.config, config)) {
|
||||
return;
|
||||
}
|
||||
@@ -148,13 +148,13 @@ public abstract class AbstractS3StorageClientImpl implements S3StorageClient {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean verifyConfig(Function<S3StorageClientConfig, Boolean> verifyConfigAction) {
|
||||
S3StorageClientConfig config = config();
|
||||
public boolean verifyConfig(Function<OssClientConfig, Boolean> verifyConfigAction) {
|
||||
OssClientConfig config = config();
|
||||
return Boolean.TRUE.equals(verifyConfigAction.apply(config));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean verifyConfig(S3StorageClientConfig verifyConfig) {
|
||||
public boolean verifyConfig(OssClientConfig verifyConfig) {
|
||||
return verifyConfig((config) -> Objects.equals(config, verifyConfig));
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package org.dromara.common.oss.client;
|
||||
|
||||
import org.dromara.common.oss.config.S3AsyncExecutorConfig;
|
||||
import org.dromara.common.oss.config.S3StorageClientConfig;
|
||||
import org.dromara.common.oss.config.OssAsyncExecutorConfig;
|
||||
import org.dromara.common.oss.config.OssClientConfig;
|
||||
import org.dromara.common.oss.exception.S3StorageException;
|
||||
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
|
||||
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
|
||||
@@ -21,9 +21,9 @@ import java.util.concurrent.Executors;
|
||||
*
|
||||
* @author 秋辞未寒
|
||||
*/
|
||||
public class DefaultS3StorageClientImpl extends AbstractS3StorageClientImpl {
|
||||
public class DefaultOssClientImpl extends AbstractOssClientImpl {
|
||||
|
||||
public DefaultS3StorageClientImpl(String clientId, S3StorageClientConfig config) {
|
||||
public DefaultOssClientImpl(String clientId, OssClientConfig config) {
|
||||
super(clientId, config);
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ public class DefaultS3StorageClientImpl extends AbstractS3StorageClientImpl {
|
||||
.build();
|
||||
|
||||
// 创建异步调度器对象
|
||||
S3AsyncExecutorConfig asyncExecutorConfig = config.asyncExecutorConfig();
|
||||
OssAsyncExecutorConfig asyncExecutorConfig = config.asyncExecutorConfig();
|
||||
// 是否使用虚拟线程
|
||||
if (asyncExecutorConfig.enabledVirtualThread()) {
|
||||
this.asyncExecutor = Executors.newVirtualThreadPerTaskExecutor();
|
||||
@@ -1,11 +1,11 @@
|
||||
package org.dromara.common.oss.client;
|
||||
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import org.dromara.common.oss.config.S3StorageClientConfig;
|
||||
import org.dromara.common.oss.config.OssClientConfig;
|
||||
import org.dromara.common.oss.io.OutputStreamDownloadSubscriber;
|
||||
import org.dromara.common.oss.model.GetObjectResult;
|
||||
import org.dromara.common.oss.model.HandleAsyncResult;
|
||||
import org.dromara.common.oss.model.PutObjectResult;
|
||||
import org.dromara.common.oss.io.OutputStreamDownloadSubscriber;
|
||||
import software.amazon.awssdk.core.async.AsyncRequestBody;
|
||||
import software.amazon.awssdk.core.async.AsyncResponseTransformer;
|
||||
import software.amazon.awssdk.services.s3.model.GetObjectRequest;
|
||||
@@ -39,7 +39,7 @@ import java.util.function.Function;
|
||||
*
|
||||
* @author 秋辞未寒
|
||||
*/
|
||||
public interface S3StorageClient extends AutoCloseable {
|
||||
public interface OssClient extends AutoCloseable {
|
||||
|
||||
/**
|
||||
* S3 存储客户端ID
|
||||
@@ -55,7 +55,7 @@ public interface S3StorageClient extends AutoCloseable {
|
||||
/**
|
||||
* 获取客户端配置copy副本
|
||||
*/
|
||||
S3StorageClientConfig config();
|
||||
OssClientConfig config();
|
||||
|
||||
/**
|
||||
* 是否已经初始化
|
||||
@@ -72,7 +72,7 @@ public interface S3StorageClient extends AutoCloseable {
|
||||
*
|
||||
* @param config 配置项
|
||||
*/
|
||||
void refresh(S3StorageClientConfig config);
|
||||
void refresh(OssClientConfig config);
|
||||
|
||||
/**
|
||||
* 校验客户端配置
|
||||
@@ -82,7 +82,7 @@ public interface S3StorageClient extends AutoCloseable {
|
||||
* @param verifyConfigAction 校验配置动作函数
|
||||
* @return 是否一致
|
||||
*/
|
||||
boolean verifyConfig(Function<S3StorageClientConfig,Boolean> verifyConfigAction);
|
||||
boolean verifyConfig(Function<OssClientConfig, Boolean> verifyConfigAction);
|
||||
|
||||
/**
|
||||
* 校验客户端配置与传入的待校验配置是否一致
|
||||
@@ -92,7 +92,7 @@ public interface S3StorageClient extends AutoCloseable {
|
||||
* @param verifyConfig 待校验的配置
|
||||
* @return 是否一致
|
||||
*/
|
||||
boolean verifyConfig(S3StorageClientConfig verifyConfig);
|
||||
boolean verifyConfig(OssClientConfig verifyConfig);
|
||||
|
||||
/**
|
||||
* 执行自定义上传请求。
|
||||
@@ -16,10 +16,10 @@ import java.util.Optional;
|
||||
* @author 秋辞未寒
|
||||
*/
|
||||
@Builder
|
||||
public record S3AccessControlPolicyConfig(
|
||||
public record AccessControlPolicyConfig(
|
||||
boolean enabled
|
||||
, AccessPolicy accessPolicy
|
||||
) implements Config<S3AccessControlPolicyConfig, S3AccessControlPolicyConfig.S3AccessControlPolicyConfigBuilder>, Serializable {
|
||||
) implements Config<AccessControlPolicyConfig, AccessControlPolicyConfig.AccessControlPolicyConfigBuilder>, Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
@@ -27,7 +27,7 @@ public record S3AccessControlPolicyConfig(
|
||||
/**
|
||||
* 默认访问策略配置
|
||||
*/
|
||||
public static final S3AccessControlPolicyConfig DEFAULT = S3AccessControlPolicyConfig.builder()
|
||||
public static final AccessControlPolicyConfig DEFAULT = AccessControlPolicyConfig.builder()
|
||||
.enabled(false)
|
||||
.accessPolicy(AccessPolicy.PUBLIC_READ_WRITE)
|
||||
.build();
|
||||
@@ -39,12 +39,12 @@ public record S3AccessControlPolicyConfig(
|
||||
}
|
||||
|
||||
@Override
|
||||
public S3AccessControlPolicyConfig copy() {
|
||||
public AccessControlPolicyConfig copy() {
|
||||
return toBuilder().build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public S3AccessControlPolicyConfigBuilder toBuilder() {
|
||||
public AccessControlPolicyConfigBuilder toBuilder() {
|
||||
return builder()
|
||||
.enabled(enabled)
|
||||
.accessPolicy(accessPolicy);
|
||||
@@ -15,10 +15,10 @@ import java.io.Serializable;
|
||||
* @author 秋辞未寒
|
||||
*/
|
||||
@Builder
|
||||
public record S3AsyncExecutorConfig(
|
||||
public record OssAsyncExecutorConfig(
|
||||
boolean enabledVirtualThread
|
||||
, int corePoolSize
|
||||
) implements Config<S3AsyncExecutorConfig, S3AsyncExecutorConfig.S3AsyncExecutorConfigBuilder>, Serializable {
|
||||
) implements Config<OssAsyncExecutorConfig, OssAsyncExecutorConfig.OssAsyncExecutorConfigBuilder>, Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
@@ -31,7 +31,7 @@ public record S3AsyncExecutorConfig(
|
||||
/**
|
||||
* 默认异步执行器配置
|
||||
*/
|
||||
public static final S3AsyncExecutorConfig DEFAULT = S3AsyncExecutorConfig.builder()
|
||||
public static final OssAsyncExecutorConfig DEFAULT = OssAsyncExecutorConfig.builder()
|
||||
.enabledVirtualThread(false)
|
||||
.corePoolSize(DEFAULT_CORE_POOL_SIZE)
|
||||
.build();
|
||||
@@ -53,12 +53,12 @@ public record S3AsyncExecutorConfig(
|
||||
}
|
||||
|
||||
@Override
|
||||
public S3AsyncExecutorConfig copy() {
|
||||
public OssAsyncExecutorConfig copy() {
|
||||
return toBuilder().build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public S3AsyncExecutorConfigBuilder toBuilder() {
|
||||
public OssAsyncExecutorConfigBuilder toBuilder() {
|
||||
return builder()
|
||||
.enabledVirtualThread(enabledVirtualThread)
|
||||
.corePoolSize(corePoolSize);
|
||||
@@ -26,7 +26,7 @@ import java.util.Optional;
|
||||
@RequiredArgsConstructor
|
||||
@Builder
|
||||
@EqualsAndHashCode
|
||||
public class S3StorageClientConfig implements Config<S3StorageClientConfig, S3StorageClientConfig.S3StorageClientConfigBuilder>, Serializable {
|
||||
public class OssClientConfig implements Config<OssClientConfig, OssClientConfig.OssClientConfigBuilder>, Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
@@ -79,12 +79,12 @@ public class S3StorageClientConfig implements Config<S3StorageClientConfig, S3St
|
||||
/**
|
||||
* ACL访问策略配置
|
||||
*/
|
||||
private final S3AccessControlPolicyConfig accessControlPolicyConfig;
|
||||
private final AccessControlPolicyConfig accessControlPolicyConfig;
|
||||
|
||||
/**
|
||||
* 异步调度池配置
|
||||
*/
|
||||
private final S3AsyncExecutorConfig asyncExecutorConfig;
|
||||
private final OssAsyncExecutorConfig asyncExecutorConfig;
|
||||
|
||||
/**
|
||||
* 访问端点
|
||||
@@ -149,20 +149,42 @@ public class S3StorageClientConfig implements Config<S3StorageClientConfig, S3St
|
||||
return Optional.ofNullable(prefix);
|
||||
}
|
||||
|
||||
/**
|
||||
* ACL访问策略配置
|
||||
*/
|
||||
public @NonNull S3AccessControlPolicyConfig accessControlPolicyConfig() {
|
||||
return Optional.ofNullable(accessControlPolicyConfig)
|
||||
.orElse(S3AccessControlPolicyConfig.DEFAULT);
|
||||
public static OssClientConfig formProperties(OssProperties properties) {
|
||||
return formPropertiesBuilder(properties).build();
|
||||
}
|
||||
|
||||
/**
|
||||
* ACL访问策略配置
|
||||
*/
|
||||
public @NonNull S3AsyncExecutorConfig asyncExecutorConfig() {
|
||||
return Optional.ofNullable(asyncExecutorConfig)
|
||||
.orElse(S3AsyncExecutorConfig.DEFAULT);
|
||||
public static OssClientConfigBuilder formPropertiesBuilder(OssProperties properties) {
|
||||
String regionString = properties.getRegion();
|
||||
Region region = Region.US_EAST_1;
|
||||
if (StringUtils.isNotBlank(regionString)) {
|
||||
region = Region.of(regionString);
|
||||
}
|
||||
|
||||
// 是否使用路径风格应当由使用者明确去配置,此处的配置只是为了适配旧的配置项
|
||||
// MinIO 使用 HTTPS 限制使用域名访问,站点填域名。需要启用路径样式访问
|
||||
boolean usePathStyleAccess = !StringUtils.containsAny(properties.getEndpoint(), OssConstant.CLOUD_SERVICE);
|
||||
|
||||
// 绝大多数的云厂商都是不允许操作ACL的,所以此处的默认配置也是禁用ACL的
|
||||
AccessControlPolicyConfig accessControlPolicyConfig = AccessControlPolicyConfig.DEFAULT;
|
||||
// 目前自定义实现的 Client 上传/下载/删除中并没有实际使用到ACL相关配置
|
||||
// 仅有业务中的链接预签名使用到(SysOssServiceImpl#matchingUrl),更多只是作为一个扩展点保留,如有需要ACL的自行实现调用逻辑
|
||||
String accessPolicyString = properties.getAccessPolicy();
|
||||
if (StringUtils.isNotBlank(accessPolicyString)) {
|
||||
accessControlPolicyConfig = AccessControlPolicyConfig.builder()
|
||||
.enabled(true)
|
||||
.accessPolicy(AccessPolicy.formType(accessPolicyString))
|
||||
.build();
|
||||
}
|
||||
return builder()
|
||||
.endpoint(properties.getEndpoint())
|
||||
.domain(properties.getDomainUrl())
|
||||
.accessKey(properties.getAccessKey())
|
||||
.secretKey(properties.getSecretKey())
|
||||
.bucket(properties.getBucketName())
|
||||
.region(region)
|
||||
.useHttps(SystemConstants.YES.equals(properties.getIsHttps()))
|
||||
.usePathStyleAccess(usePathStyleAccess)
|
||||
.accessControlPolicyConfig(accessControlPolicyConfig);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -224,11 +246,27 @@ public class S3StorageClientConfig implements Config<S3StorageClientConfig, S3St
|
||||
return usePathStyleAccess ? BucketUrlUtil.getPathStyleBucketUrl(useHttps, url, bucket) : BucketUrlUtil.getSiteStyleBucketUrl(useHttps, url, bucket);
|
||||
}
|
||||
|
||||
/**
|
||||
* ACL访问策略配置
|
||||
*/
|
||||
public @NonNull AccessControlPolicyConfig accessControlPolicyConfig() {
|
||||
return Optional.ofNullable(accessControlPolicyConfig)
|
||||
.orElse(AccessControlPolicyConfig.DEFAULT);
|
||||
}
|
||||
|
||||
/**
|
||||
* ACL访问策略配置
|
||||
*/
|
||||
public @NonNull OssAsyncExecutorConfig asyncExecutorConfig() {
|
||||
return Optional.ofNullable(asyncExecutorConfig)
|
||||
.orElse(OssAsyncExecutorConfig.DEFAULT);
|
||||
}
|
||||
|
||||
/**
|
||||
* 复制S3存储客户端配置对象
|
||||
*/
|
||||
@Override
|
||||
public S3StorageClientConfig copy() {
|
||||
public OssClientConfig copy() {
|
||||
return toBuilder().build();
|
||||
}
|
||||
|
||||
@@ -236,7 +274,7 @@ public class S3StorageClientConfig implements Config<S3StorageClientConfig, S3St
|
||||
* 转为S3存储客户端配置构建器对象
|
||||
*/
|
||||
@Override
|
||||
public S3StorageClientConfigBuilder toBuilder() {
|
||||
public OssClientConfigBuilder toBuilder() {
|
||||
return builder()
|
||||
.endpoint(endpoint)
|
||||
.domain(domain)
|
||||
@@ -250,42 +288,4 @@ public class S3StorageClientConfig implements Config<S3StorageClientConfig, S3St
|
||||
.accessControlPolicyConfig(accessControlPolicyConfig().copy())
|
||||
.asyncExecutorConfig(asyncExecutorConfig().copy());
|
||||
}
|
||||
|
||||
public static S3StorageClientConfig formProperties(OssProperties properties){
|
||||
return formPropertiesBuilder(properties).build();
|
||||
}
|
||||
|
||||
public static S3StorageClientConfigBuilder formPropertiesBuilder(OssProperties properties){
|
||||
String regionString = properties.getRegion();
|
||||
Region region = Region.US_EAST_1;
|
||||
if (StringUtils.isNotBlank(regionString)) {
|
||||
region = Region.of(regionString);
|
||||
}
|
||||
|
||||
// 是否使用路径风格应当由使用者明确去配置,此处的配置只是为了适配旧的配置项
|
||||
// MinIO 使用 HTTPS 限制使用域名访问,站点填域名。需要启用路径样式访问
|
||||
boolean usePathStyleAccess = !StringUtils.containsAny(properties.getEndpoint(), OssConstant.CLOUD_SERVICE);
|
||||
|
||||
// 绝大多数的云厂商都是不允许操作ACL的,所以此处的默认配置也是禁用ACL的
|
||||
S3AccessControlPolicyConfig accessControlPolicyConfig = S3AccessControlPolicyConfig.DEFAULT;
|
||||
// 目前自定义实现的 Client 上传/下载/删除中并没有实际使用到ACL相关配置
|
||||
// 仅有业务中的链接预签名使用到(SysOssServiceImpl#matchingUrl),更多只是作为一个扩展点保留,如有需要ACL的自行实现调用逻辑
|
||||
String accessPolicyString = properties.getAccessPolicy();
|
||||
if (StringUtils.isNotBlank(accessPolicyString)) {
|
||||
accessControlPolicyConfig = S3AccessControlPolicyConfig.builder()
|
||||
.enabled(true)
|
||||
.accessPolicy(AccessPolicy.formType(accessPolicyString))
|
||||
.build();
|
||||
}
|
||||
return builder()
|
||||
.endpoint(properties.getEndpoint())
|
||||
.domain(properties.getDomainUrl())
|
||||
.accessKey(properties.getAccessKey())
|
||||
.secretKey(properties.getSecretKey())
|
||||
.bucket(properties.getBucketName())
|
||||
.region(region)
|
||||
.useHttps(SystemConstants.YES.equals(properties.getIsHttps()))
|
||||
.usePathStyleAccess(usePathStyleAccess)
|
||||
.accessControlPolicyConfig(accessControlPolicyConfig);
|
||||
}
|
||||
}
|
||||
@@ -4,12 +4,12 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.constant.CacheNames;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.json.utils.JsonUtils;
|
||||
import org.dromara.common.oss.client.DefaultOssClientImpl;
|
||||
import org.dromara.common.oss.client.OssClient;
|
||||
import org.dromara.common.oss.config.OssClientConfig;
|
||||
import org.dromara.common.oss.constant.OssConstant;
|
||||
import org.dromara.common.oss.properties.OssProperties;
|
||||
import org.dromara.common.oss.client.DefaultS3StorageClientImpl;
|
||||
import org.dromara.common.oss.client.S3StorageClient;
|
||||
import org.dromara.common.oss.config.S3StorageClientConfig;
|
||||
import org.dromara.common.oss.exception.S3StorageException;
|
||||
import org.dromara.common.oss.properties.OssProperties;
|
||||
import org.dromara.common.redis.utils.CacheUtils;
|
||||
import org.dromara.common.redis.utils.RedisUtils;
|
||||
|
||||
@@ -23,15 +23,15 @@ import java.util.concurrent.locks.ReentrantLock;
|
||||
* @author 秋辞未寒
|
||||
*/
|
||||
@Slf4j
|
||||
public class S3StorageClientFactory {
|
||||
public class OssFactory {
|
||||
|
||||
private static final Map<String, S3StorageClient> CLIENT_CACHE = new ConcurrentHashMap<>();
|
||||
private static final Map<String, OssClient> CLIENT_CACHE = new ConcurrentHashMap<>();
|
||||
private static final ReentrantLock LOCK = new ReentrantLock();
|
||||
|
||||
/**
|
||||
* 获取默认实例
|
||||
*/
|
||||
public static S3StorageClient instance() {
|
||||
public static OssClient instance() {
|
||||
// 获取redis 默认类型
|
||||
String configKey = RedisUtils.getCacheObject(OssConstant.DEFAULT_CONFIG_KEY);
|
||||
if (StringUtils.isEmpty(configKey)) {
|
||||
@@ -43,18 +43,18 @@ public class S3StorageClientFactory {
|
||||
/**
|
||||
* 根据类型获取实例
|
||||
*/
|
||||
public static S3StorageClient instance(String configKey) {
|
||||
public static OssClient instance(String configKey) {
|
||||
String json = CacheUtils.get(CacheNames.SYS_OSS_CONFIG, configKey);
|
||||
if (json == null) {
|
||||
throw S3StorageException.form("系统异常, '" + configKey + "'配置信息不存在!");
|
||||
}
|
||||
OssProperties properties = JsonUtils.parseObject(json, OssProperties.class);
|
||||
S3StorageClientConfig config = S3StorageClientConfig.formProperties(properties);
|
||||
OssClientConfig config = OssClientConfig.formProperties(properties);
|
||||
LOCK.lock();
|
||||
try {
|
||||
// 如果已经存在,则校验配置一致性
|
||||
if (CLIENT_CACHE.containsKey(configKey)) {
|
||||
S3StorageClient client = CLIENT_CACHE.get(configKey);
|
||||
OssClient client = CLIENT_CACHE.get(configKey);
|
||||
if (!client.verifyConfig(config)) {
|
||||
// 配置不一致,刷新配置
|
||||
client.refresh(config);
|
||||
@@ -62,7 +62,7 @@ public class S3StorageClientFactory {
|
||||
}
|
||||
return client;
|
||||
}
|
||||
DefaultS3StorageClientImpl client = new DefaultS3StorageClientImpl(configKey,config);
|
||||
DefaultOssClientImpl client = new DefaultOssClientImpl(configKey, config);
|
||||
CLIENT_CACHE.put(configKey, client);
|
||||
return client;
|
||||
} finally {
|
||||
@@ -74,7 +74,7 @@ public class S3StorageClientFactory {
|
||||
* 移除实例
|
||||
*/
|
||||
public static boolean remove(String configKey) {
|
||||
S3StorageClient client = CLIENT_CACHE.remove(configKey);
|
||||
OssClient client = CLIENT_CACHE.remove(configKey);
|
||||
if (client == null) {
|
||||
return false;
|
||||
}
|
||||
Reference in New Issue
Block a user