From cfb590a0393d57b5b2ca32e9ed8b5fc1918cfa13 Mon Sep 17 00:00:00 2001 From: duandazhi Date: Wed, 24 Nov 2021 16:08:46 +0800 Subject: [PATCH] =?UTF-8?q?ruoyi-file=20=E5=8A=A8=E6=80=81=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=20bean=20=E6=B3=A8=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/file/config/AliyunOssConfig.java | 2 +- .../com/ruoyi/file/config/CephConfig.java | 2 +- .../com/ruoyi/file/config/FastDfsConfig.java | 4 +- .../java/com/ruoyi/file/config/FtpConfig.java | 2 +- .../com/ruoyi/file/config/MinioConfig.java | 2 +- .../ruoyi/file/config/QiniuKodoConfig.java | 2 +- .../ruoyi/file/config/ResourcesConfig.java | 2 +- .../ruoyi/file/config/TencentCosConfig.java | 2 +- .../com/ruoyi/file/config/WebMvcConfig.java | 91 ++++++++++++++++ .../file/controller/SysFileController.java | 1 + .../file/service/AliyunOssDsfServiceImpl.java | 10 +- .../file/service/CephSysFileServiceImpl.java | 9 +- .../service/FastDfsSysFileServiceImpl.java | 13 ++- .../file/service/FtpFileServiceImpl.java | 8 +- .../ruoyi/file/service/ISysFileService.java | 56 ++++++++++ .../file/service/LocalSysFileServiceImpl.java | 2 +- .../file/service/MinioSysFileServiceImpl.java | 13 ++- .../file/service/QiniuSysFileServiceImpl.java | 9 +- .../file/service/TencentCosServiceImpl.java | 3 - .../src/main/resources/bootstrap.yml | 103 +++++++++--------- 20 files changed, 244 insertions(+), 92 deletions(-) create mode 100644 ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/WebMvcConfig.java diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/AliyunOssConfig.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/AliyunOssConfig.java index edc19306..b9dbd557 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/AliyunOssConfig.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/AliyunOssConfig.java @@ -17,7 +17,7 @@ import org.springframework.context.annotation.Configuration; @Configuration @ConfigurationProperties(prefix = AliyunOssConfig.PREFIX) public class AliyunOssConfig { - public static final String PREFIX = "aliyun-oss"; + public static final String PREFIX = "file.aliyun-oss"; /** * aliyun oss相关配置 * ACCESS_KEY_SECRET diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/CephConfig.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/CephConfig.java index 30b6ee32..7b35e895 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/CephConfig.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/CephConfig.java @@ -15,7 +15,7 @@ import org.springframework.context.annotation.Configuration; prefix = CephConfig.PREFIX ) public class CephConfig { - public static final String PREFIX = "ceph"; + public static final String PREFIX = "file.ceph"; /** * s3 提供的 accessKey secretKey * 示例: diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/FastDfsConfig.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/FastDfsConfig.java index e9f3194d..8706f027 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/FastDfsConfig.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/FastDfsConfig.java @@ -2,7 +2,9 @@ package com.ruoyi.file.config; import com.github.tobato.fastdfs.FdfsClientConstants; import com.github.tobato.fastdfs.domain.conn.PooledConnectionFactory; +import com.github.tobato.fastdfs.domain.conn.TrackerConnectionManager; import com.ruoyi.file.service.FastDfsSysFileServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.context.annotation.Configuration; @@ -24,7 +26,7 @@ import org.springframework.context.annotation.Configuration; public class FastDfsConfig { /** * 文件对外访问域名or ip - * FastDFS配置 其他参数见:{@link PooledConnectionFactory} + * FastDFS配置 其他参数见:{@link PooledConnectionFactory} {@link TrackerConnectionManager} * //@Value("${fdfs.domain}") */ private String domain; diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/FtpConfig.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/FtpConfig.java index 41600b9e..a7a97975 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/FtpConfig.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/FtpConfig.java @@ -18,7 +18,7 @@ import org.springframework.context.annotation.Configuration; prefix = FtpConfig.PREFIX ) public class FtpConfig { - public static final String PREFIX = "ftp"; + public static final String PREFIX = "file.ftp"; /** * ftp访问地址 * eg1: www.ourslook.com diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/MinioConfig.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/MinioConfig.java index bdbb32ed..4c981e11 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/MinioConfig.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/MinioConfig.java @@ -20,7 +20,7 @@ import org.springframework.stereotype.Component; @Configuration @ConfigurationProperties(prefix = MinioConfig.PREFIX) public class MinioConfig { - public static final String PREFIX = "minio"; + public static final String PREFIX = "file.minio"; @Bean public MinioClient getMinioClient() { diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/QiniuKodoConfig.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/QiniuKodoConfig.java index 1a292a6c..bbca1850 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/QiniuKodoConfig.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/QiniuKodoConfig.java @@ -20,7 +20,7 @@ import org.springframework.context.annotation.Configuration; @Configuration @ConfigurationProperties(prefix = QiniuKodoConfig.PREFIX) public class QiniuKodoConfig { - public static final String PREFIX = "qiniu"; + public static final String PREFIX = "file.qiniu"; /** * AccessKey 简称ak * 申请地址=>登录七牛云:https://portal.qiniu.com/user/key diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/ResourcesConfig.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/ResourcesConfig.java index 688e2291..a98adb0a 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/ResourcesConfig.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/ResourcesConfig.java @@ -24,7 +24,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @ConfigurationProperties(prefix = ResourcesConfig.PREFIX) public class ResourcesConfig implements WebMvcConfigurer { - public static final String PREFIX = "file"; + public static final String PREFIX = "file.local-file"; /** * 文件对外访问地址,一般就是应用 或者 nginx对外地址 * eg: http://127.0.0.1:9300 diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/TencentCosConfig.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/TencentCosConfig.java index fd303955..49f0e207 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/TencentCosConfig.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/TencentCosConfig.java @@ -26,7 +26,7 @@ import org.springframework.context.annotation.Configuration; @Configuration @ConfigurationProperties(prefix = TencentCosConfig.PREFIX) public class TencentCosConfig { - public static final String PREFIX = "tencent-cos"; + public static final String PREFIX = "file.tencent-cos"; @Bean public COSClient getCosClient() { diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/WebMvcConfig.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/WebMvcConfig.java new file mode 100644 index 00000000..e72118f0 --- /dev/null +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/WebMvcConfig.java @@ -0,0 +1,91 @@ +package com.ruoyi.file.config; + +import com.github.tobato.fastdfs.service.FastFileStorageClient; +import com.qcloud.cos.COSClient; +import com.ruoyi.file.service.*; +import io.minio.MinioClient; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.support.DefaultListableBeanFactory; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.context.annotation.*; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * 自定义webmvc config + * + * @author yabo + * @date 2021-11-18 + *

+ * private RequestMappingHandlerAdapter requestMappingHandlerAdapter; + * ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer) requestMappingHandlerAdapter.getWebBindingInitializer(); + * if (initializer.getConversionService() != null) { + * GenericConversionService genericConversionService = (GenericConversionService) initializer.getConversionService(); + * genericConversionService.addConverter(new CustomConverter()); + * } + * @see ISysFileService + * // 具体实现config + * @see AliyunOssConfig 阿里云oss + * @see CephConfig ceph文件服务 + * @see FastDfsConfig fastdfs + * @see FtpConfig ftp + * @see MinioConfig minio + * @see QiniuKodoConfig 七牛kodo + * @see ResourcesConfig tomcat映射目录 + * @see TencentCosConfig 腾讯云cos文件服务器 + */ +@RefreshScope +@ConfigurationProperties(prefix = WebMvcConfig.PREFIX) +@Configuration +public class WebMvcConfig implements WebMvcConfigurer, ApplicationContextAware { + public static final String PREFIX = "file"; + /*** + * 指定文件服务器类型 + */ + protected ISysFileService.DfsTypeEnum fileServerType = ISysFileService.DfsTypeEnum.DEFAULT; + + @Primary + @Description("dfs bean.....") + @ConditionalOnMissingBean + @Bean(name = "ISysFileService") + public ISysFileService registFileBean(FastFileStorageClient fastFileStorageClient, FastDfsConfig fastDfsConfig, + FtpConfig ftpConfig, + AliyunOssConfig aliyunOssConfig, + CephConfig cephConfig, + MinioConfig minioConfig, MinioClient minioClient, + COSClient cosClient, TencentCosConfig tencentCosConfig, + QiniuKodoConfig qiniuKodoConfig, + ResourcesConfig resourcesConfig) { + if (ISysFileService.DfsTypeEnum.FASTDFS.equals(fileServerType)) { + return new FastDfsSysFileServiceImpl(fastFileStorageClient, fastDfsConfig); + } else if (ISysFileService.DfsTypeEnum.FTP.equals(fileServerType)) { + return new FtpFileServiceImpl(ftpConfig); + } else if (ISysFileService.DfsTypeEnum.ALIYUN_OSS.equals(fileServerType)) { + return new AliyunOssDsfServiceImpl(aliyunOssConfig); + } else if (ISysFileService.DfsTypeEnum.CEPH.equals(fileServerType)) { + return new CephSysFileServiceImpl(cephConfig); + } else if (ISysFileService.DfsTypeEnum.MINIO.equals(fileServerType)) { + return new MinioSysFileServiceImpl(minioConfig, minioClient); + } else if (ISysFileService.DfsTypeEnum.TENCENT_COS.equals(fileServerType)) { + return new TencentCosServiceImpl(cosClient, tencentCosConfig); + } else if (ISysFileService.DfsTypeEnum.QINIU_KODO.equals(fileServerType)) { + return new QiniuSysFileServiceImpl(qiniuKodoConfig); + } + return new LocalSysFileServiceImpl(resourcesConfig); + } + + public void setFileServerType(ISysFileService.DfsTypeEnum fileServerType) { + this.fileServerType = fileServerType; + } + + private ApplicationContext applicationContext; + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + this.applicationContext = applicationContext; + } +} diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java index b3e4733a..1163003f 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java @@ -7,6 +7,7 @@ import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/AliyunOssDsfServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/AliyunOssDsfServiceImpl.java index 25695769..132dfaac 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/AliyunOssDsfServiceImpl.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/AliyunOssDsfServiceImpl.java @@ -42,12 +42,14 @@ import java.util.concurrent.TimeUnit; * @date 2019/8/6 19:02 * //@see AliyunMsgUtil */ -@Primary -@Service() public class AliyunOssDsfServiceImpl implements ISysFileService { private static final Logger log = LoggerFactory.getLogger(AliyunOssDsfServiceImpl.class); - @Autowired - private AliyunOssConfig aliyunOssConfig; + private final AliyunOssConfig aliyunOssConfig; + + public AliyunOssDsfServiceImpl(AliyunOssConfig aliyunOssConfig) { + this.aliyunOssConfig = aliyunOssConfig; + } + /** * demo 地址 https://help.aliyun.com/learn/learningpath/oss.html *

diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/CephSysFileServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/CephSysFileServiceImpl.java index b9c6bb5f..b6c569e5 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/CephSysFileServiceImpl.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/CephSysFileServiceImpl.java @@ -39,14 +39,15 @@ import java.util.concurrent.atomic.AtomicLong; * 2:ceph存储,使用docker部署 https://www.cnblogs.com/bladeyul/p/10649049.html * 3:使用docker 搭建 ceph 开发环境,使用aws sdk 存储数据 https://blog.csdn.net/freewebsys/article/details/79553386 */ -@Service() public class CephSysFileServiceImpl implements ISysFileService { private static final Logger log = LoggerFactory.getLogger(CephSysFileServiceImpl.class); - @Autowired - private CephConfig cephConfig; - + private final CephConfig cephConfig; protected static AmazonS3 amazonS3 = null; + public CephSysFileServiceImpl(CephConfig cephConfig) { + this.cephConfig = cephConfig; + } + /** * ceph配置初始化 */ diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FastDfsSysFileServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FastDfsSysFileServiceImpl.java index 76fee341..4ba34bb5 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FastDfsSysFileServiceImpl.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FastDfsSysFileServiceImpl.java @@ -20,16 +20,17 @@ import com.github.tobato.fastdfs.service.FastFileStorageClient; * @author ruoyi * @see FastDfsConfig */ -//@Primary -@Service() public class FastDfsSysFileServiceImpl implements ISysFileService { private final Logger logger = LoggerFactory.getLogger(FastDfsSysFileServiceImpl.class); - @Autowired - private FastFileStorageClient storageClient; - @Autowired - private FastDfsConfig fastDfsConfig; + private final FastFileStorageClient storageClient; + private final FastDfsConfig fastDfsConfig; + + public FastDfsSysFileServiceImpl(FastFileStorageClient storageClient, FastDfsConfig fastDfsConfig) { + this.storageClient = storageClient; + this.fastDfsConfig = fastDfsConfig; + } /** * FastDfs文件上传接口 diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FtpFileServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FtpFileServiceImpl.java index 4aeaa1bc..f66a992f 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FtpFileServiceImpl.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FtpFileServiceImpl.java @@ -16,10 +16,12 @@ import java.io.IOException; * ftp, 如:iis、linux ftp、vsftpd、FileZilla Server,需要自己搭建服务 * @author dazer */ -@Service() public class FtpFileServiceImpl implements ISysFileService { - @Autowired - private FtpConfig ftpConfig; + private final FtpConfig ftpConfig; + + public FtpFileServiceImpl(FtpConfig ftpConfig) { + this.ftpConfig = ftpConfig; + } @Override public String uploadFile(MultipartFile file) throws Exception { diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ISysFileService.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ISysFileService.java index 22a841a0..d93595c5 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ISysFileService.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ISysFileService.java @@ -39,6 +39,62 @@ public interface ISysFileService // pdf "pdf" }; + enum DfsTypeEnum { + /** + * 最原始,文件移动 + * @see LocalSysFileServiceImpl + * 2014-07-06 + */ + DEFAULT, + /** + * ftp, 如:iis、linux ftp、vsftpd、FileZilla Server,需要自己搭建服务 + * 这里的FTP要求和主项目在同一个服务器,并且访问路径完全同DEFAULT ,只是DEFAULT: tomcat处理、ftp: 使用 其他ftp工具处理 + * @see FtpFileServiceImpl + * 「「如果使用tomcat,tomcat自己值提供上传能力,不提供访问能力,访问能力比较危险。我们使用nginx 进行代理访问」」 + * 2019-07-06 + */ + FTP, + /** + * 淘宝 开发的分布式 dfs, 需要自己搭建服务 (FastDFS) + * @see FastDfsSysFileServiceImpl + * 2016-09-07 + */ + FASTDFS, + /** + * aliyun oss https://help.aliyun.com/learn/learningpath/oss.html ,需要购买 + * 【sts】 【临时授权】 -- 对象存储- 使用签名URL进行临时授权 https://help.aliyun.com/document_detail/32016.html?spm=a2c4g.11186623.6.992.7a943b4aPjkyTA#title-pu8-5o8-x7j + * @see AliyunOssDsfServiceImpl + * 2019-08-06 + */ + ALIYUN_OSS, + /** + * CEPH 分布式大数据文件存储系统 http://docs.ceph.org.cn/ + * @see CephSysFileServiceImpl + * 2020-05-06 + */ + CEPH, + /** + * minio 类似一个阿里云oss、腾讯COS的一个开源、轻量级别的对象存储付; + * 英文地址:https://min.io/ + * 中文地址:http://docs.minio.org.cn/docs/ http://www.minio.org.cn/ + * 支持对url进行鉴权:【sts】【临时授权】 【Presigned presignedGetObject 预签】 MinIO STS快速入门指南 http://docs.minio.org.cn/docs/master/minio-sts-quickstart-guide + * minio SDKS Java Client API参考文档 http://docs.minio.org.cn/docs/master/java-client-api-reference + * @see MinioSysFileServiceImpl + * 2021-02-09 + */ + MINIO, + /** + * 腾讯云存储 cos + * @see TencentCosServiceImpl + */ + TENCENT_COS, + /** + * 七牛 Kodo + * @see QiniuSysFileServiceImpl + */ + QINIU_KODO + } + /** * 文件上传接口 * diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java index e58f78bd..0432712f 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.io.FileUtil; import com.ruoyi.common.core.exception.CustomException; import com.ruoyi.file.config.ResourcesConfig; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import com.ruoyi.file.utils.FileUploadUtils; @@ -15,7 +16,6 @@ import java.io.File; * * @author ruoyi */ -@Service() public class LocalSysFileServiceImpl implements ISysFileService { private final ResourcesConfig resourcesConfig; diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java index 652552f0..5ac35a64 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java @@ -33,14 +33,15 @@ import java.util.function.Consumer; * http://docs.minio.org.cn/docs/master/java-client-api-reference#presignedGetObject * MinIO STS快速入门指南 http://docs.minio.org.cn/docs/master/minio-sts-quickstart-guide */ -//@Primary -@Service() public class MinioSysFileServiceImpl implements ISysFileService { - @Autowired - private MinioConfig minioConfig; - @Autowired - private MinioClient minioClient; + private final MinioConfig minioConfig; + private final MinioClient minioClient; + + public MinioSysFileServiceImpl(MinioConfig minioConfig, MinioClient minioClient) { + this.minioConfig = minioConfig; + this.minioClient = minioClient; + } /** * 本地文件上传接口 diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/QiniuSysFileServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/QiniuSysFileServiceImpl.java index e8a3f48f..efab893a 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/QiniuSysFileServiceImpl.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/QiniuSysFileServiceImpl.java @@ -31,12 +31,13 @@ import java.io.InputStream; * * 构建时间戳防盗链访问链接: https://developer.qiniu.com/kodo/1239/java#fusion-antileech */ -//@Primary -@Service() public class QiniuSysFileServiceImpl implements ISysFileService { private static final Logger log = LoggerFactory.getLogger(QiniuSysFileServiceImpl.class); - @Autowired - private QiniuKodoConfig qiniuKodoConfig; + private final QiniuKodoConfig qiniuKodoConfig; + + public QiniuSysFileServiceImpl(QiniuKodoConfig qiniuKodoConfig) { + this.qiniuKodoConfig = qiniuKodoConfig; + } @Override public String uploadFile(MultipartFile file) throws Exception { diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/TencentCosServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/TencentCosServiceImpl.java index 7f6d5e81..92954731 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/TencentCosServiceImpl.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/TencentCosServiceImpl.java @@ -9,7 +9,6 @@ import com.qcloud.cos.model.*; import com.ruoyi.common.core.exception.CustomException; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.file.config.TencentCosConfig; -import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.net.URL; @@ -22,8 +21,6 @@ import java.util.List; * @author yabo * @see TencentCosConfig */ -//@Primary -@Service() public class TencentCosServiceImpl implements ISysFileService { private final COSClient cosClient; private final TencentCosConfig config; diff --git a/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml index 4820f729..ffc606de 100644 --- a/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml @@ -3,7 +3,7 @@ server: port: 9300 # Spring -spring: +spring: application: # 应用名称 name: ruoyi-file @@ -16,12 +16,12 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 127.0.0.1:8848 - namespace: 72b686a1-d9f6-499f-8275-e481b664779e + server-addr: 192.168.254.146:8948 + namespace: 83b5e907-a1b8-4a03-ad76-0f2a1f6e8437 config: # 配置中心地址 - server-addr: 127.0.0.1:8848 - namespace: 72b686a1-d9f6-499f-8275-e481b664779e + server-addr: 192.168.254.146:8948 + namespace: 83b5e907-a1b8-4a03-ad76-0f2a1f6e8437 # 配置文件格式 file-extension: yml # 共享配置 @@ -29,59 +29,56 @@ spring: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} -# 文件服务器之1 本地文件上传 file: - domain: http://localhost:9300 - prefix: /statics - path: D:/ruoyi/uploadPath - -# 文件服务器之2 ftp -ftp: - endpoint: 118.31.2.53 - port: 21 - user-name: lanjinjun - password: - domain: https://test53.ourslook.com - + file-server-type: ALIYUN_OSS + # 文件服务器之1 本地文件上传 + local-file: + domain: http://localhost:9300 + prefix: /statics + path: D:/ruoyi/uploadPath + # 文件服务器之2 ftp + ftp: + endpoint: 118.31.2.53 + port: 21 + user-name: lanjinjun + password: + domain: https://test53.ourslook.com + # 文件服务器之4 Minio配置 + minio: + url: http://10.16.58.152:9000 + accessKey: D99KGE6ZTQXSATTJWU24 + secretKey: QyVqGnhIQQE734UYSUFlGOZViE6+ZlDEfUG3NjhJ + bucketName: appt-file + domain: https://yq666.bj.gov.cn + expiry-duration: 32400 + # 文件服务器之5 aliyun oss + aliyun-oss: + access-key: LTAI4GDQSbwgmbsRxxbDXnKT + secret-key: I1xYosCsIf4YgHeFbWUOU4faImeWD2 + bucket-name: react-yuebaoxiao-pro + endpoint: oss-cn-shanghai.aliyuncs.com + domain: https://react-yuebaoxiao-pro.oss-cn-shanghai.aliyuncs.com + expiry-duration: 32400 + # 文件服务器之6 qiniu 七牛 kodo + qiniu: + access-key: pRYrSe_EW4sJHsQ6JyuiRYShA2JCLKtMhT-N4TQD + secret-key: CwTEh1kSLBdxBhIWfFz6h1GgDSokx97CYEV0cC1O + bucket-name: guangdong-oss + domain: http://guangdong-oss.ityun.ltd + expiry-duration: 32400 + # 文件服务器之7 tencent cos 文件存储 + tencent-cos: + access-key: AKIDX9hNAzpdUI0XyRpASj098xa7uYzOekmh + secret-key: sW5VgkdHlDYqy01xiGbkjV5TghUEvYEw + endpoint: ap-chengdu + bucket-name: tencent-cloud-cos-dazer-1253883700 + domain: https://cos.ityun.ltd + expiry-duration: 32400 # 文件服务器之3 FastDFS配置 +##### fdfs 配置路径特殊, 为了兼容fastdfs fdfs: soTimeout: 3000 connectTimeout: 5000 trackerList: 47.99.175.191:22122 domain: http://47.99.175.191:8888 token-secret-key: test@test - -# 文件服务器之4 Minio配置 -minio: - url: http://10.16.58.152:9000 - accessKey: D99KGE6ZTQXSATTJWU24 - secretKey: QyVqGnhIQQE734UYSUFlGOZViE6+ZlDEfUG3NjhJ - bucketName: appt-file - domain: https://yq666.bj.gov.cn - expiry-duration: 32400 - -# 文件服务器之5 aliyun oss -aliyun-oss: - access-key: LTAI4GDQSbwgmbsRxxbDXnKT - secret-key: I1xYosCsIf4YgHeFbWUOU4faImeWD2 - bucket-name: react-yuebaoxiao-pro - endpoint: oss-cn-shanghai.aliyuncs.com - domain: https://react-yuebaoxiao-pro.oss-cn-shanghai.aliyuncs.com - expiry-duration: 32400 - -# 文件服务器之6 qiniu 七牛 kodo -qiniu: - access-key: pRYrSe_EW4sJHsQ6JyuiRYShA2JCLKtMhT-N4TQD - secret-key: CwTEh1kSLBdxBhIWfFz6h1GgDSokx97CYEV0cC1O - bucket-name: guangdong-oss - domain: http://guangdong-oss.ityun.ltd - expiry-duration: 32400 - -# 文件服务器之7 tencent cos 文件存储 -tencent-cos: - access-key: AKIDX9hNAzpdUI0XyRpASj098xa7uYzOekmh - secret-key: sW5VgkdHlDYqy01xiGbkjV5TghUEvYEw - endpoint: ap-chengdu - bucket-name: tencent-cloud-cos-dazer-1253883700 - domain: https://cos.ityun.ltd - expiry-duration: 32400