diff --git a/blade-starter-oss/src/main/java/org/springblade/core/oss/AliossTemplate.java b/blade-starter-oss/src/main/java/org/springblade/core/oss/AliossTemplate.java
index 2fb64de..222869f 100644
--- a/blade-starter-oss/src/main/java/org/springblade/core/oss/AliossTemplate.java
+++ b/blade-starter-oss/src/main/java/org/springblade/core/oss/AliossTemplate.java
@@ -15,14 +15,13 @@
*/
package org.springblade.core.oss;
-import com.aliyun.oss.OSSClient;
-import com.aliyun.oss.common.utils.BinaryUtil;
-import com.aliyun.oss.model.MatchMode;
-import com.aliyun.oss.model.ObjectMetadata;
-import com.aliyun.oss.model.PolicyConditions;
-import com.aliyun.oss.model.PutObjectResult;
-import lombok.AllArgsConstructor;
-import lombok.SneakyThrows;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.Date;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
import org.springblade.core.oss.model.BladeFile;
import org.springblade.core.oss.model.OssFile;
import org.springblade.core.oss.props.OssProperties;
@@ -33,12 +32,15 @@ import org.springblade.core.tool.utils.StringUtil;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
-import java.util.Date;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import com.aliyun.oss.OSSClient;
+import com.aliyun.oss.common.utils.BinaryUtil;
+import com.aliyun.oss.model.MatchMode;
+import com.aliyun.oss.model.ObjectMetadata;
+import com.aliyun.oss.model.PolicyConditions;
+import com.aliyun.oss.model.PutObjectResult;
+
+import lombok.AllArgsConstructor;
+import lombok.SneakyThrows;
/**
* AliossTemplate
@@ -157,6 +159,15 @@ public class AliossTemplate implements OssTemplate {
return put(bucketName, stream, fileName, false);
}
+ /**
+ * 上传文件到OSS
+ *
+ * @param bucketName 存储桶名称
+ * @param stream 输入流
+ * @param key 文件名
+ * @param cover 是否覆盖上传
+ * @return BladeFile 上传文件信息
+ */
@SneakyThrows
public BladeFile put(String bucketName, InputStream stream, String key, boolean cover) {
makeBucket(bucketName);
@@ -207,48 +218,61 @@ public class AliossTemplate implements OssTemplate {
}
/**
- * 根据规则生成存储桶名称规则
+ * 获取默认存储桶名称
*
- * @return String
+ * @return String 存储桶名称
*/
private String getBucketName() {
return getBucketName(ossProperties.getBucketName());
}
/**
- * 根据规则生成存储桶名称规则
+ * 根据规则生成存储桶名称
*
* @param bucketName 存储桶名称
- * @return String
+ * @return String 处理后的存储桶名称
*/
private String getBucketName(String bucketName) {
return ossRule.bucketName(bucketName);
}
/**
- * 根据规则生成文件名称规则
+ * 根据规则生成文件名称
*
* @param originalFilename 原始文件名
- * @return string
+ * @return String 处理后的文件名
*/
private String getFileName(String originalFilename) {
return ossRule.fileName(originalFilename);
}
+ /**
+ * 获取默认存储桶的上传凭证
+ *
+ * @return String 上传凭证
+ */
public String getUploadToken() {
return getUploadToken(ossProperties.getBucketName());
}
/**
- * TODO 过期时间
- *
- * 获取上传凭证,普通上传
+ * 获取指定存储桶的上传凭证
+ *
+ * @param bucketName 存储桶名称
+ * @return String 上传凭证
*/
public String getUploadToken(String bucketName) {
// 默认过期时间2小时
return getUploadToken(bucketName, ossProperties.getArgs().get("expireTime", 3600L));
}
+ /**
+ * 获取带过期时间的上传凭证
+ *
+ * @param bucketName 存储桶名称
+ * @param expireTime 过期时间(秒)
+ * @return String 上传凭证
+ */
public String getUploadToken(String bucketName, long expireTime) {
String baseDir = "upload";
@@ -276,10 +300,10 @@ public class AliossTemplate implements OssTemplate {
}
/**
- * 获取域名
+ * 获取指定存储桶的OSS访问域名
*
* @param bucketName 存储桶名称
- * @return String
+ * @return String OSS访问域名
*/
public String getOssHost(String bucketName) {
String prefix = getEndpoint().contains("https://") ? "https://" : "http://";
@@ -287,18 +311,18 @@ public class AliossTemplate implements OssTemplate {
}
/**
- * 获取域名
+ * 获取默认存储桶的OSS访问域名
*
- * @return String
+ * @return String OSS访问域名
*/
public String getOssHost() {
return getOssHost(ossProperties.getBucketName());
}
/**
- * 获取服务地址
+ * 获取OSS服务的Endpoint
*
- * @return String
+ * @return String OSS Endpoint
*/
public String getEndpoint() {
if (StringUtil.isBlank(ossProperties.getTransformEndpoint())) {
@@ -307,5 +331,4 @@ public class AliossTemplate implements OssTemplate {
return ossProperties.getTransformEndpoint();
}
-
}
diff --git a/blade-starter-oss/src/main/java/org/springblade/core/oss/MinioTemplate.java b/blade-starter-oss/src/main/java/org/springblade/core/oss/MinioTemplate.java
index 8da7c8d..39e0b7c 100644
--- a/blade-starter-oss/src/main/java/org/springblade/core/oss/MinioTemplate.java
+++ b/blade-starter-oss/src/main/java/org/springblade/core/oss/MinioTemplate.java
@@ -78,17 +78,33 @@ public class MinioTemplate implements OssTemplate {
}
}
+ /**
+ * 获取默认存储桶
+ *
+ * @return Bucket MinIO存储桶
+ */
@SneakyThrows
public Bucket getBucket() {
return getBucket(getBucketName());
}
+ /**
+ * 获取指定名称的存储桶
+ *
+ * @param bucketName 存储桶名称
+ * @return Bucket MinIO存储桶
+ */
@SneakyThrows
public Bucket getBucket(String bucketName) {
Optional bucketOptional = client.listBuckets().stream().filter(bucket -> bucket.name().equals(getBucketName(bucketName))).findFirst();
return bucketOptional.orElse(null);
}
+ /**
+ * 获取所有存储桶列表
+ *
+ * @return 存储桶列表
+ */
@SneakyThrows
public List listBuckets() {
return client.listBuckets();
@@ -202,6 +218,15 @@ public class MinioTemplate implements OssTemplate {
return putFile(bucketName, fileName, stream, "application/octet-stream");
}
+ /**
+ * 上传文件到MinIO
+ *
+ * @param bucketName 存储桶名称
+ * @param fileName 文件名
+ * @param stream 输入流
+ * @param contentType 文件类型
+ * @return BladeFile 上传文件信息
+ */
@SneakyThrows
public BladeFile putFile(String bucketName, String fileName, InputStream stream, String contentType) {
makeBucket(bucketName);
@@ -251,41 +276,41 @@ public class MinioTemplate implements OssTemplate {
}
/**
- * 根据规则生成存储桶名称规则
+ * 获取默认存储桶名称
*
- * @return String
+ * @return String 存储桶名称
*/
private String getBucketName() {
return getBucketName(ossProperties.getBucketName());
}
/**
- * 根据规则生成存储桶名称规则
+ * 根据规则生成存储桶名称
*
* @param bucketName 存储桶名称
- * @return String
+ * @return String 处理后的存储桶名称
*/
private String getBucketName(String bucketName) {
return ossRule.bucketName(bucketName);
}
/**
- * 根据规则生成文件名称规则
+ * 根据规则生成文件名称
*
* @param originalFilename 原始文件名
- * @return string
+ * @return String 处理后的文件名
*/
private String getFileName(String originalFilename) {
return ossRule.fileName(originalFilename);
}
/**
- * 获取文件外链
+ * 获取预签名对象URL
*
- * @param bucketName bucket名称
- * @param fileName 文件名称
- * @param expires 过期时间
- * @return url
+ * @param bucketName 存储桶名称
+ * @param fileName 文件名
+ * @param expires 过期时间(秒)
+ * @return String 预签名URL
*/
@SneakyThrows
public String getPresignedObjectUrl(String bucketName, String fileName, Integer expires) {
@@ -300,21 +325,21 @@ public class MinioTemplate implements OssTemplate {
}
/**
- * 获取存储桶策略
+ * 获取存储桶策略配置
*
- * @param policyType 策略枚举
- * @return String
+ * @param policyType 策略类型
+ * @return String 存储桶策略
*/
public String getPolicyType(PolicyType policyType) {
return getPolicyType(getBucketName(), policyType);
}
/**
- * 获取存储桶策略
+ * 获取存储桶策略配置
*
* @param bucketName 存储桶名称
- * @param policyType 策略枚举
- * @return String
+ * @param policyType 策略类型
+ * @return String 存储桶策略
*/
public static String getPolicyType(String bucketName, PolicyType policyType) {
StringBuilder builder = new StringBuilder();
@@ -397,28 +422,28 @@ public class MinioTemplate implements OssTemplate {
}
/**
- * 获取域名
+ * 获取指定存储桶的访问域名
*
* @param bucketName 存储桶名称
- * @return String
+ * @return String 访问域名
*/
public String getOssHost(String bucketName) {
return getEndpoint() + StringPool.SLASH + getBucketName(bucketName);
}
/**
- * 获取域名
+ * 获取默认存储桶的访问域名
*
- * @return String
+ * @return String 访问域名
*/
public String getOssHost() {
return getOssHost(ossProperties.getBucketName());
}
/**
- * 获取服务地址
+ * 获取MinIO服务的Endpoint
*
- * @return String
+ * @return String MinIO Endpoint
*/
public String getEndpoint() {
if (StringUtil.isBlank(ossProperties.getTransformEndpoint())) {
diff --git a/blade-starter-oss/src/main/java/org/springblade/core/oss/QiniuTemplate.java b/blade-starter-oss/src/main/java/org/springblade/core/oss/QiniuTemplate.java
index dc16b5d..106a12b 100644
--- a/blade-starter-oss/src/main/java/org/springblade/core/oss/QiniuTemplate.java
+++ b/blade-starter-oss/src/main/java/org/springblade/core/oss/QiniuTemplate.java
@@ -44,10 +44,29 @@ import java.util.List;
*/
@AllArgsConstructor
public class QiniuTemplate implements OssTemplate {
+ /**
+ * 七牛云认证对象
+ */
private final Auth auth;
+
+ /**
+ * 七牛云上传管理对象
+ */
private final UploadManager uploadManager;
+
+ /**
+ * 七牛云存储空间管理对象
+ */
private final BucketManager bucketManager;
+
+ /**
+ * OSS配置属性
+ */
private final OssProperties ossProperties;
+
+ /**
+ * OSS规则对象
+ */
private final OssRule ossRule;
@Override
@@ -156,6 +175,15 @@ public class QiniuTemplate implements OssTemplate {
return put(bucketName, stream, fileName, false);
}
+ /**
+ * 上传文件到七牛云
+ *
+ * @param bucketName 存储空间名称
+ * @param stream 输入流
+ * @param key 文件名
+ * @param cover 是否覆盖上传
+ * @return BladeFile 上传文件信息
+ */
@SneakyThrows
public BladeFile put(String bucketName, InputStream stream, String key, boolean cover) {
makeBucket(bucketName);
@@ -206,68 +234,68 @@ public class QiniuTemplate implements OssTemplate {
}
/**
- * 根据规则生成存储桶名称规则
+ * 获取默认存储空间名称
*
- * @return String
+ * @return String 存储空间名称
*/
private String getBucketName() {
return getBucketName(ossProperties.getBucketName());
}
/**
- * 根据规则生成存储桶名称规则
+ * 根据规则生成存储空间名称
*
- * @param bucketName 存储桶名称
- * @return String
+ * @param bucketName 存储空间名称
+ * @return String 处理后的存储空间名称
*/
private String getBucketName(String bucketName) {
return ossRule.bucketName(bucketName);
}
/**
- * 根据规则生成文件名称规则
+ * 根据规则生成文件名称
*
* @param originalFilename 原始文件名
- * @return string
+ * @return String 处理后的文件名
*/
private String getFileName(String originalFilename) {
return ossRule.fileName(originalFilename);
}
/**
- * 获取上传凭证,普通上传
+ * 获取普通上传凭证
*
- * @param bucketName 存储桶名称
- * @return string
+ * @param bucketName 存储空间名称
+ * @return String 上传凭证
*/
public String getUploadToken(String bucketName) {
return auth.uploadToken(getBucketName(bucketName));
}
/**
- * 获取上传凭证,覆盖上传
+ * 获取覆盖上传凭证
*
- * @param bucketName 存储桶名称
- * @param key key
- * @return string
+ * @param bucketName 存储空间名称
+ * @param key 文件名
+ * @return String 上传凭证
*/
private String getUploadToken(String bucketName, String key) {
return auth.uploadToken(getBucketName(bucketName), key);
}
/**
- * 获取域名
+ * 获取七牛云访问域名
*
- * @return String
+ * @return String 访问域名
*/
public String getOssHost() {
return getEndpoint();
}
/**
- * 获取服务地址
+ * 获取七牛云服务的Endpoint
*
- * @return String
+ * @return String 七牛云Endpoint
*/
public String getEndpoint() {
if (StringUtil.isBlank(ossProperties.getTransformEndpoint())) {
@@ -276,5 +304,4 @@ public class QiniuTemplate implements OssTemplate {
return ossProperties.getTransformEndpoint();
}
-
}
diff --git a/blade-starter-oss/src/main/java/org/springblade/core/oss/TencentCosTemplate.java b/blade-starter-oss/src/main/java/org/springblade/core/oss/TencentCosTemplate.java
index e95ed6f..b141687 100644
--- a/blade-starter-oss/src/main/java/org/springblade/core/oss/TencentCosTemplate.java
+++ b/blade-starter-oss/src/main/java/org/springblade/core/oss/TencentCosTemplate.java
@@ -39,12 +39,22 @@ import java.util.List;
*
*
* @author yangkai.shen
- * @date Created in 2020/1/7 17:24
*/
@AllArgsConstructor
public class TencentCosTemplate implements OssTemplate {
+ /**
+ * 腾讯云 COS 客户端
+ */
private final COSClient cosClient;
+
+ /**
+ * OSS配置属性
+ */
private final OssProperties ossProperties;
+
+ /**
+ * OSS规则对象
+ */
private final OssRule ossRule;
@Override
@@ -166,6 +176,15 @@ public class TencentCosTemplate implements OssTemplate {
return put(bucketName, stream, fileName, false);
}
+ /**
+ * 上传文件到腾讯云COS
+ *
+ * @param bucketName 存储桶名称
+ * @param stream 输入流
+ * @param key 文件名
+ * @param cover 是否覆盖上传
+ * @return BladeFile 上传文件信息
+ */
@SneakyThrows
public BladeFile put(String bucketName, InputStream stream, String key, boolean cover) {
makeBucket(bucketName);
@@ -217,39 +236,39 @@ public class TencentCosTemplate implements OssTemplate {
}
/**
- * 根据规则生成存储桶名称规则
+ * 获取默认存储桶名称
*
- * @return String
+ * @return String 存储桶名称
*/
private String getBucketName() {
return getBucketName(ossProperties.getBucketName());
}
/**
- * 根据规则生成存储桶名称规则
+ * 根据规则生成存储桶名称
*
* @param bucketName 存储桶名称
- * @return String
+ * @return String 处理后的存储桶名称
*/
private String getBucketName(String bucketName) {
return ossRule.bucketName(bucketName).concat(StringPool.DASH).concat(ossProperties.getAppId());
}
/**
- * 根据规则生成文件名称规则
+ * 根据规则生成文件名称
*
* @param originalFilename 原始文件名
- * @return string
+ * @return String 处理后的文件名
*/
private String getFileName(String originalFilename) {
return ossRule.fileName(originalFilename);
}
/**
- * 获取域名
+ * 获取指定存储桶的访问域名
*
* @param bucketName 存储桶名称
- * @return String
+ * @return String 访问域名
*/
public String getOssHost(String bucketName) {
String prefix = getEndpoint().contains("https://") ? "https://" : "http://";
@@ -257,18 +276,18 @@ public class TencentCosTemplate implements OssTemplate {
}
/**
- * 获取域名
+ * 获取默认存储桶的访问域名
*
- * @return String
+ * @return String 访问域名
*/
public String getOssHost() {
return getOssHost(ossProperties.getBucketName());
}
/**
- * 获取服务地址
+ * 获取腾讯云COS服务的Endpoint
*
- * @return String
+ * @return String 腾讯云COS Endpoint
*/
public String getEndpoint() {
if (StringUtil.isBlank(ossProperties.getTransformEndpoint())) {
diff --git a/blade-starter-oss/src/main/java/org/springblade/core/oss/config/AliossConfiguration.java b/blade-starter-oss/src/main/java/org/springblade/core/oss/config/AliossConfiguration.java
index 9a436bc..88f4671 100644
--- a/blade-starter-oss/src/main/java/org/springblade/core/oss/config/AliossConfiguration.java
+++ b/blade-starter-oss/src/main/java/org/springblade/core/oss/config/AliossConfiguration.java
@@ -15,10 +15,6 @@
*/
package org.springblade.core.oss.config;
-import com.aliyun.oss.ClientConfiguration;
-import com.aliyun.oss.OSSClient;
-import com.aliyun.oss.common.auth.CredentialsProvider;
-import com.aliyun.oss.common.auth.DefaultCredentialProvider;
import org.springblade.core.oss.AliossTemplate;
import org.springblade.core.oss.props.OssProperties;
import org.springblade.core.oss.rule.OssRule;
@@ -30,8 +26,15 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
+import com.aliyun.oss.ClientConfiguration;
+import com.aliyun.oss.OSSClient;
+import com.aliyun.oss.common.auth.CredentialsProvider;
+import com.aliyun.oss.common.auth.DefaultCredentialProvider;
+
/**
- * Alioss配置类
+ * 阿里云OSS对象存储配置类
+ * 用于配置阿里云OSS客户端及其模板类
+ * 仅在配置文件中指定 oss.name=alioss 时生效
*
* @author Chill
*/
@@ -41,6 +44,20 @@ import org.springframework.context.annotation.Bean;
@ConditionalOnProperty(value = "oss.name", havingValue = "alioss")
public class AliossConfiguration {
+ /**
+ * 配置阿里云OSS客户端
+ * 当容器中不存在 OSSClient 类型的Bean时生效
+ * 配置包括:
+ * - 最大HTTP连接数
+ * - Socket传输超时时间
+ * - 建立连接超时时间
+ * - 连接池获取连接超时时间
+ * - 连接空闲超时时间
+ * - 请求失败重试次数
+ *
+ * @param ossProperties OSS配置属性
+ * @return OSSClient 阿里云OSS客户端实例
+ */
@Bean
@ConditionalOnMissingBean(OSSClient.class)
public OSSClient ossClient(OssProperties ossProperties) {
@@ -62,6 +79,15 @@ public class AliossConfiguration {
return new OSSClient(ossProperties.getEndpoint(), credentialsProvider, conf);
}
+ /**
+ * 配置阿里云OSS操作模板
+ * 需要容器中存在 OSSClient 的Bean,且不存在 AliossTemplate 的Bean时生效
+ *
+ * @param ossRule OSS规则配置
+ * @param ossProperties OSS配置属性
+ * @param ossClient 阿里云OSS客户端
+ * @return AliossTemplate 阿里云OSS操作模板
+ */
@Bean
@ConditionalOnBean({OSSClient.class})
@ConditionalOnMissingBean(AliossTemplate.class)
diff --git a/blade-starter-oss/src/main/java/org/springblade/core/oss/config/MinioConfiguration.java b/blade-starter-oss/src/main/java/org/springblade/core/oss/config/MinioConfiguration.java
index 6dd3a07..9df6521 100644
--- a/blade-starter-oss/src/main/java/org/springblade/core/oss/config/MinioConfiguration.java
+++ b/blade-starter-oss/src/main/java/org/springblade/core/oss/config/MinioConfiguration.java
@@ -15,8 +15,6 @@
*/
package org.springblade.core.oss.config;
-import io.minio.MinioClient;
-import lombok.SneakyThrows;
import org.springblade.core.oss.MinioTemplate;
import org.springblade.core.oss.props.OssProperties;
import org.springblade.core.oss.rule.OssRule;
@@ -28,8 +26,13 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
+import io.minio.MinioClient;
+import lombok.SneakyThrows;
+
/**
- * Minio配置类
+ * MinIO对象存储配置类
+ * 用于配置MinIO客户端及其模板类
+ * 仅在配置文件中指定 oss.name=minio 时生效
*
* @author Chill
*/
@@ -39,6 +42,13 @@ import org.springframework.context.annotation.Bean;
@ConditionalOnProperty(value = "oss.name", havingValue = "minio")
public class MinioConfiguration {
+ /**
+ * 配置MinIO客户端
+ * 当容器中不存在 MinioClient 类型的Bean时生效
+ *
+ * @param ossProperties OSS配置属性
+ * @return MinioClient MinIO客户端实例
+ */
@Bean
@SneakyThrows
@ConditionalOnMissingBean(MinioClient.class)
@@ -49,6 +59,15 @@ public class MinioConfiguration {
.build();
}
+ /**
+ * 配置MinIO操作模板
+ * 需要容器中存在 MinioClient 的Bean,且不存在 MinioTemplate 的Bean时生效
+ *
+ * @param ossRule OSS规则配置
+ * @param ossProperties OSS配置属性
+ * @param minioClient MinIO客户端
+ * @return MinioTemplate MinIO操作模板
+ */
@Bean
@ConditionalOnBean({MinioClient.class})
@ConditionalOnMissingBean(MinioTemplate.class)
diff --git a/blade-starter-oss/src/main/java/org/springblade/core/oss/config/OssConfiguration.java b/blade-starter-oss/src/main/java/org/springblade/core/oss/config/OssConfiguration.java
index 9c72353..3f022cc 100644
--- a/blade-starter-oss/src/main/java/org/springblade/core/oss/config/OssConfiguration.java
+++ b/blade-starter-oss/src/main/java/org/springblade/core/oss/config/OssConfiguration.java
@@ -24,7 +24,8 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
import org.springframework.context.annotation.Bean;
/**
- * Oss配置类
+ * OSS对象存储配置类
+ * 用于配置通用的OSS规则和属性
*
* @author Chill
*/
@@ -32,6 +33,12 @@ import org.springframework.context.annotation.Bean;
@EnableConfigurationProperties(OssProperties.class)
public class OssConfiguration {
+ /**
+ * 配置默认的OSS规则实现
+ * 当容器中不存在 OssRule 类型的Bean时生效
+ *
+ * @return OssRule OSS规则实现类
+ */
@Bean
@ConditionalOnMissingBean(OssRule.class)
public OssRule ossRule() {
diff --git a/blade-starter-oss/src/main/java/org/springblade/core/oss/config/QiniuConfiguration.java b/blade-starter-oss/src/main/java/org/springblade/core/oss/config/QiniuConfiguration.java
index 8f80836..12cedd7 100644
--- a/blade-starter-oss/src/main/java/org/springblade/core/oss/config/QiniuConfiguration.java
+++ b/blade-starter-oss/src/main/java/org/springblade/core/oss/config/QiniuConfiguration.java
@@ -15,10 +15,6 @@
*/
package org.springblade.core.oss.config;
-import com.qiniu.storage.BucketManager;
-import com.qiniu.storage.Region;
-import com.qiniu.storage.UploadManager;
-import com.qiniu.util.Auth;
import org.springblade.core.oss.QiniuTemplate;
import org.springblade.core.oss.props.OssProperties;
import org.springblade.core.oss.rule.OssRule;
@@ -30,8 +26,15 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
+import com.qiniu.storage.BucketManager;
+import com.qiniu.storage.Region;
+import com.qiniu.storage.UploadManager;
+import com.qiniu.util.Auth;
+
/**
- * Qiniu配置类
+ * 七牛云对象存储配置类
+ * 用于配置七牛云存储的客户端组件及其模板类
+ * 仅在配置文件中指定 oss.name=qiniu 时生效
*
* @author Chill
*/
@@ -41,24 +44,53 @@ import org.springframework.context.annotation.Bean;
@ConditionalOnProperty(value = "oss.name", havingValue = "qiniu")
public class QiniuConfiguration {
+ /**
+ * 配置七牛云存储配置对象
+ * 当容器中不存在 Configuration 类型的Bean时生效
+ * 使用自动区域配置
+ *
+ * @return Configuration 七牛云存储配置对象
+ */
@Bean
@ConditionalOnMissingBean(com.qiniu.storage.Configuration.class)
public com.qiniu.storage.Configuration qnConfiguration() {
return new com.qiniu.storage.Configuration(Region.autoRegion());
}
+ /**
+ * 配置七牛云认证对象
+ * 当容器中不存在 Auth 类型的Bean时生效
+ *
+ * @param ossProperties OSS配置属性
+ * @return Auth 七牛云认证对象
+ */
@Bean
@ConditionalOnMissingBean(Auth.class)
public Auth auth(OssProperties ossProperties) {
return Auth.create(ossProperties.getAccessKey(), ossProperties.getSecretKey());
}
+ /**
+ * 配置七牛云上传管理器
+ * 需要容器中存在 Configuration 类型的Bean时生效
+ *
+ * @param cfg 七牛云存储配置对象
+ * @return UploadManager 七牛云上传管理器
+ */
@Bean
@ConditionalOnBean(com.qiniu.storage.Configuration.class)
public UploadManager uploadManager(com.qiniu.storage.Configuration cfg) {
return new UploadManager(cfg);
}
+ /**
+ * 配置七牛云存储空间管理器
+ * 需要容器中存在 Configuration 类型的Bean时生效
+ *
+ * @param ossProperties OSS配置属性
+ * @param cfg 七牛云存储配置对象
+ * @return BucketManager 七牛云存储空间管理器
+ */
@Bean
@ConditionalOnBean(com.qiniu.storage.Configuration.class)
public BucketManager bucketManager(OssProperties ossProperties,
@@ -66,6 +98,17 @@ public class QiniuConfiguration {
return new BucketManager(Auth.create(ossProperties.getAccessKey(), ossProperties.getSecretKey()), cfg);
}
+ /**
+ * 配置七牛云存储操作模板
+ * 需要容器中存在 Auth、UploadManager、BucketManager 的Bean,且不存在 QiniuTemplate 的Bean时生效
+ *
+ * @param ossRule OSS规则配置
+ * @param ossProperties OSS配置属性
+ * @param auth 七牛云认证对象
+ * @param uploadManager 七牛云上传管理器
+ * @param bucketManager 七牛云存储空间管理器
+ * @return QiniuTemplate 七牛云存储操作模板
+ */
@Bean
@ConditionalOnBean({Auth.class, UploadManager.class, BucketManager.class})
@ConditionalOnMissingBean(QiniuTemplate.class)
diff --git a/blade-starter-oss/src/main/java/org/springblade/core/oss/config/TencentCosConfiguration.java b/blade-starter-oss/src/main/java/org/springblade/core/oss/config/TencentCosConfiguration.java
index e47905f..aa2c961 100644
--- a/blade-starter-oss/src/main/java/org/springblade/core/oss/config/TencentCosConfiguration.java
+++ b/blade-starter-oss/src/main/java/org/springblade/core/oss/config/TencentCosConfiguration.java
@@ -15,12 +15,6 @@
*/
package org.springblade.core.oss.config;
-import com.qcloud.cos.COSClient;
-import com.qcloud.cos.ClientConfig;
-import com.qcloud.cos.auth.BasicCOSCredentials;
-import com.qcloud.cos.auth.COSCredentials;
-import com.qcloud.cos.region.Region;
-import lombok.AllArgsConstructor;
import org.springblade.core.oss.TencentCosTemplate;
import org.springblade.core.oss.props.OssProperties;
import org.springblade.core.oss.rule.OssRule;
@@ -32,13 +26,20 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
+import com.qcloud.cos.COSClient;
+import com.qcloud.cos.ClientConfig;
+import com.qcloud.cos.auth.BasicCOSCredentials;
+import com.qcloud.cos.auth.COSCredentials;
+import com.qcloud.cos.region.Region;
+
+import lombok.AllArgsConstructor;
+
/**
*
* 腾讯云 COS 自动装配
*
*
* @author yangkai.shen
- * @date Created in 2020/1/7 17:24
*/
@AllArgsConstructor
@AutoConfiguration(after = OssConfiguration.class)
@@ -47,10 +48,29 @@ import org.springframework.context.annotation.Bean;
@ConditionalOnProperty(value = "oss.name", havingValue = "tencentcos")
public class TencentCosConfiguration {
+ /**
+ * OSS配置属性
+ */
private final OssProperties ossProperties;
+
+ /**
+ * OSS规则对象
+ */
private final OssRule ossRule;
-
+ /**
+ * 配置腾讯云COS客户端
+ * 当容器中不存在 COSClient 类型的Bean时生效
+ * 配置包括:
+ * - 用户身份信息(secretId, secretKey)
+ * - 存储桶区域设置
+ * - 最大HTTP连接数
+ * - Socket传输超时时间
+ * - 建立连接超时时间
+ * - 连接池获取连接超时时间
+ *
+ * @return COSClient 腾讯云COS客户端实例
+ */
@Bean
@ConditionalOnMissingBean(COSClient.class)
public COSClient ossClient() {
@@ -71,6 +91,13 @@ public class TencentCosConfiguration {
return new COSClient(credentials, clientConfig);
}
+ /**
+ * 配置腾讯云COS操作模板
+ * 需要容器中存在 COSClient 的Bean,且不存在 TencentCosTemplate 的Bean时生效
+ *
+ * @param cosClient 腾讯云COS客户端
+ * @return TencentCosTemplate 腾讯云COS操作模板
+ */
@Bean
@ConditionalOnBean({COSClient.class})
@ConditionalOnMissingBean(TencentCosTemplate.class)
diff --git a/pom.xml b/pom.xml
index 7dcd994..eb4aba2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -690,9 +690,6 @@
-
- false
-