From 0f5d1901c63d4a0a8ccddc6fc44d3dd9262e4876 Mon Sep 17 00:00:00 2001 From: Dftre <3066417822@qq.com> Date: Thu, 27 Jun 2024 11:23:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E4=B8=9A=E5=8A=A1=E4=B8=BA?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=B3=A8=E5=85=A5=EF=BC=8C=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E7=B1=BB=E4=B8=BA=E6=87=92=E6=B1=89=E6=A8=A1=E5=BC=8F=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E5=8D=95=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../minio/utils/MinioFileService.java | 18 +++--- .../middleware/minio/utils/MinioUtil.java | 59 ++++++++++++------- 2 files changed, 48 insertions(+), 29 deletions(-) diff --git a/ruoyi-middleware/ruoyi-middleware-minio/src/main/java/com/ruoyi/middleware/minio/utils/MinioFileService.java b/ruoyi-middleware/ruoyi-middleware-minio/src/main/java/com/ruoyi/middleware/minio/utils/MinioFileService.java index 8555fc4..b49e11c 100644 --- a/ruoyi-middleware/ruoyi-middleware-minio/src/main/java/com/ruoyi/middleware/minio/utils/MinioFileService.java +++ b/ruoyi-middleware/ruoyi-middleware-minio/src/main/java/com/ruoyi/middleware/minio/utils/MinioFileService.java @@ -1,24 +1,28 @@ package com.ruoyi.middleware.minio.utils; +import java.io.File; +import java.io.InputStream; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.FileService; import com.ruoyi.common.utils.file.FileUtils; -import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.middleware.minio.config.MinioConfig; import com.ruoyi.middleware.minio.domain.MinioFileVO; -import org.springframework.stereotype.Component; -import org.springframework.web.multipart.MultipartFile; - -import java.io.File; -import java.io.InputStream; /** * Minio文件操作实现类 */ @Component("file:strategy:minio") +@ConditionalOnProperty(prefix = "minio", name = { "enable" }, havingValue = "true", matchIfMissing = false) public class MinioFileService implements FileService { - private static MinioConfig minioConfig = SpringUtils.getBean(MinioConfig.class); + @Autowired + private MinioConfig minioConfig; @Override public String upload(String filePath, MultipartFile file) throws Exception { diff --git a/ruoyi-middleware/ruoyi-middleware-minio/src/main/java/com/ruoyi/middleware/minio/utils/MinioUtil.java b/ruoyi-middleware/ruoyi-middleware-minio/src/main/java/com/ruoyi/middleware/minio/utils/MinioUtil.java index 6f5157a..c726fc0 100644 --- a/ruoyi-middleware/ruoyi-middleware-minio/src/main/java/com/ruoyi/middleware/minio/utils/MinioUtil.java +++ b/ruoyi-middleware/ruoyi-middleware-minio/src/main/java/com/ruoyi/middleware/minio/utils/MinioUtil.java @@ -1,9 +1,13 @@ package com.ruoyi.middleware.minio.utils; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.List; + +import org.springframework.web.multipart.MultipartFile; + import com.ruoyi.common.exception.file.FileException; -import com.ruoyi.common.exception.file.FileNameLengthLimitExceededException; -import com.ruoyi.common.exception.file.FileSizeLimitExceededException; -import com.ruoyi.common.exception.file.InvalidExtensionException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.common.utils.spring.SpringUtils; @@ -13,14 +17,14 @@ import com.ruoyi.middleware.minio.config.MinioConfig; import com.ruoyi.middleware.minio.domain.MinioFileVO; import com.ruoyi.middleware.minio.exception.MinioClientErrorException; import com.ruoyi.middleware.minio.exception.MinioClientNotFundException; -import io.minio.*; -import io.minio.messages.DeleteError; -import org.springframework.web.multipart.MultipartFile; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.List; +import io.minio.GetObjectArgs; +import io.minio.GetObjectResponse; +import io.minio.PutObjectArgs; +import io.minio.RemoveObjectArgs; +import io.minio.RemoveObjectsArgs; +import io.minio.Result; +import io.minio.messages.DeleteError; /** * Minio工具 @@ -28,7 +32,18 @@ import java.util.List; */ public class MinioUtil { - private static MinioConfig minioConfig = SpringUtils.getBean(MinioConfig.class); + private static MinioConfig minioConfig; + + private static MinioConfig getMinioConfig() { + if (minioConfig == null) { + synchronized (MinioFileService.class) { + if (minioConfig == null) { + minioConfig = SpringUtils.getBean(MinioConfig.class); + } + } + } + return minioConfig; + } /** * 文件上传 @@ -58,7 +73,7 @@ public class MinioUtil { */ public static String uploadFile(PutObjectArgs putObjectArgs) throws Exception { try { - MinioClientConfig.MinioClientEntity masterClient = minioConfig.getMasterClient(); + MinioClientConfig.MinioClientEntity masterClient = getMinioConfig().getMasterClient(); masterClient.getClient().putObject(putObjectArgs); StringBuilder url = new StringBuilder(); url.append(MinioConfig.prefix).append("/").append(masterClient.getDefaultBuket()) @@ -79,7 +94,7 @@ public class MinioUtil { * @return 返回上传成功的文件路径 */ private static String uploadFileIterator(int index, PutObjectArgs putObjectArgs) { - List slaveClientsList = minioConfig.getSlaveClientsList(); + List slaveClientsList = getMinioConfig().getSlaveClientsList(); if (index >= slaveClientsList.size()) { throw new MinioClientNotFundException(); } @@ -135,7 +150,7 @@ public class MinioUtil { * @throws IOException 比如读写文件出错时 */ public static void removeFile(RemoveObjectArgs removeObjectArgs) throws Exception { - minioConfig.getMasterClient().getClient().removeObject(removeObjectArgs); + getMinioConfig().getMasterClient().getClient().removeObject(removeObjectArgs); } /** @@ -158,7 +173,7 @@ public class MinioUtil { * @throws IOException 比如读写文件出错时 */ public static Iterable> removeFiles(RemoveObjectsArgs removeObjectsArgs) { - return minioConfig.getMasterClient().getClient().removeObjects(removeObjectsArgs); + return getMinioConfig().getMasterClient().getClient().removeObjects(removeObjectsArgs); } /** @@ -169,9 +184,9 @@ public class MinioUtil { * @throws IOException 比如读写文件出错时 */ public static MinioFileVO getFile(GetObjectArgs getObjectArgs) throws Exception { - GetObjectResponse inputStream = minioConfig.getMasterClient().getClient().getObject(getObjectArgs); + GetObjectResponse inputStream = getMinioConfig().getMasterClient().getClient().getObject(getObjectArgs); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - byte[] bytes = new byte[minioConfig.maxSize]; + byte[] bytes = new byte[getMinioConfig().maxSize]; int length = 0; while (true) { try { @@ -214,7 +229,7 @@ public class MinioUtil { } public static String uploadFile(String clientName, PutObjectArgs putObjectArgs) throws Exception { - MinioClientConfig.MinioClientEntity minioClientEntity = minioConfig.getSlaveClients().get(clientName); + MinioClientConfig.MinioClientEntity minioClientEntity = getMinioConfig().getSlaveClients().get(clientName); minioClientEntity.getClient().putObject(putObjectArgs); StringBuilder url = new StringBuilder(); url.append(MinioConfig.prefix).append("/").append(minioClientEntity.getDefaultBuket()) @@ -235,7 +250,7 @@ public class MinioUtil { } public static void removeFile(String clientName, RemoveObjectArgs removeObjectArgs) throws Exception { - minioConfig.getSlaveClients().get(clientName).getClient().removeObject(removeObjectArgs); + getMinioConfig().getSlaveClients().get(clientName).getClient().removeObject(removeObjectArgs); } public static void removeFile(String clientName, String buketName, String fileName) throws Exception { @@ -244,14 +259,14 @@ public class MinioUtil { } public static Iterable> removeFiles(RemoveObjectsArgs removeObjectsArgs) { - return minioConfig.getMasterClient().getClient().removeObjects(removeObjectsArgs); + return getMinioConfig().getMasterClient().getClient().removeObjects(removeObjectsArgs); } public static MinioFileVO getFile(String clientName, GetObjectArgs getObjectArgs) throws Exception { - GetObjectResponse inputStream = minioConfig.getSlaveClients().get(clientName).getClient() + GetObjectResponse inputStream = getMinioConfig().getSlaveClients().get(clientName).getClient() .getObject(getObjectArgs); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - byte[] bytes = new byte[minioConfig.maxSize]; + byte[] bytes = new byte[getMinioConfig().maxSize]; int length = 0; while (true) { try {