From fdf35224ddaaf9e2eef2bfbc55589ed71b13ec0f Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Fri, 27 Dec 2024 11:28:19 +0800 Subject: [PATCH] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=AD=98=E5=82=A8=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/pc/FaceServiceImpl.java | 6 ----- .../ycwl/basic/storage/StorageFactory.java | 17 +++++++++++-- .../ycwl/basic/storage/enums/StorageType.java | 3 --- .../starter/StorageAutoConfiguration.java | 24 ++++++++++--------- .../starter/config/OverallStorageConfig.java | 2 +- .../starter/config/StorageConfigItem.java | 3 ++- src/main/resources/application-dev.yml | 1 + src/main/resources/application-prod.yml | 1 + 8 files changed, 33 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/ycwl/basic/service/impl/pc/FaceServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/pc/FaceServiceImpl.java index cfcb729..725a7fb 100644 --- a/src/main/java/com/ycwl/basic/service/impl/pc/FaceServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/pc/FaceServiceImpl.java @@ -18,23 +18,17 @@ import com.ycwl.basic.service.task.TaskFaceService; import com.ycwl.basic.service.task.TaskService; import com.ycwl.basic.storage.StorageFactory; import com.ycwl.basic.storage.adapters.IStorageAdapter; -import com.ycwl.basic.storage.enums.StorageType; import com.ycwl.basic.storage.utils.StorageUtil; -import com.ycwl.basic.task.FaceCleaner; import com.ycwl.basic.utils.*; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; -import java.io.IOException; -import java.io.InputStream; import java.math.BigDecimal; import java.util.Date; import java.util.List; -import java.util.Objects; import java.util.UUID; import java.util.stream.Collectors; diff --git a/src/main/java/com/ycwl/basic/storage/StorageFactory.java b/src/main/java/com/ycwl/basic/storage/StorageFactory.java index 4cc28e2..78a84eb 100644 --- a/src/main/java/com/ycwl/basic/storage/StorageFactory.java +++ b/src/main/java/com/ycwl/basic/storage/StorageFactory.java @@ -5,6 +5,7 @@ import com.ycwl.basic.storage.adapters.IStorageAdapter; import com.ycwl.basic.storage.adapters.LocalStorageAdapter; import com.ycwl.basic.storage.entity.StorageConfig; import com.ycwl.basic.storage.enums.StorageType; +import com.ycwl.basic.storage.exceptions.StorageConfigException; import com.ycwl.basic.storage.exceptions.StorageUndefinedException; import com.ycwl.basic.storage.exceptions.StorageUnsupportedException; @@ -37,7 +38,8 @@ public class StorageFactory { return get(storageType); } - public static Map definedName = new HashMap<>(); + protected static Map definedName = new HashMap<>(); + protected static IStorageAdapter defaultStorage = null; public static void register(String name, IStorageAdapter adapter) { definedName.put(name, adapter); @@ -46,8 +48,19 @@ public class StorageFactory { public static IStorageAdapter use(String name) { IStorageAdapter adapter = definedName.get(name); if (adapter == null) { - throw new StorageUndefinedException(name); + throw new StorageUndefinedException("未定义的存储方式:"+name); } return adapter; } + + public static IStorageAdapter use() { + if (defaultStorage == null) { + throw new StorageConfigException("未定义默认存储方式"); + } + return defaultStorage; + } + + public static void setDefault(String defaultStorage) { + StorageFactory.defaultStorage = use(defaultStorage); + } } diff --git a/src/main/java/com/ycwl/basic/storage/enums/StorageType.java b/src/main/java/com/ycwl/basic/storage/enums/StorageType.java index 3f5d9fd..e1bfa8a 100644 --- a/src/main/java/com/ycwl/basic/storage/enums/StorageType.java +++ b/src/main/java/com/ycwl/basic/storage/enums/StorageType.java @@ -1,8 +1,5 @@ package com.ycwl.basic.storage.enums; -import com.ycwl.basic.storage.adapters.AliOssAdapter; -import com.ycwl.basic.storage.adapters.IStorageAdapter; -import com.ycwl.basic.storage.adapters.LocalStorageAdapter; import lombok.Getter; public enum StorageType { diff --git a/src/main/java/com/ycwl/basic/storage/starter/StorageAutoConfiguration.java b/src/main/java/com/ycwl/basic/storage/starter/StorageAutoConfiguration.java index 534e7a7..b80068f 100644 --- a/src/main/java/com/ycwl/basic/storage/starter/StorageAutoConfiguration.java +++ b/src/main/java/com/ycwl/basic/storage/starter/StorageAutoConfiguration.java @@ -3,28 +3,30 @@ package com.ycwl.basic.storage.starter; import com.ycwl.basic.storage.StorageFactory; import com.ycwl.basic.storage.adapters.IStorageAdapter; import com.ycwl.basic.storage.starter.config.OverallStorageConfig; +import com.ycwl.basic.storage.starter.config.StorageConfigItem; +import org.apache.commons.lang3.StringUtils; import org.springframework.context.annotation.Configuration; -import java.util.Map; - @Configuration public class StorageAutoConfiguration { private final OverallStorageConfig config; public StorageAutoConfiguration(OverallStorageConfig config) { this.config = config; if (config != null) { - loadConfig(); + if (config.getConfigs() != null) { + loadConfig(); + } + if (StringUtils.isNotBlank(config.getDefaultUse())) { + StorageFactory.setDefault(config.getDefaultUse()); + } } } private void loadConfig() { - config.getConfigs().forEach(item -> { - String name = item.getName(); - String type = item.getType(); - IStorageAdapter adapter = StorageFactory.get(type); - Map config = item.getConfig(); - adapter.loadConfig(config); - StorageFactory.register(name, adapter); - }); + for (StorageConfigItem item : config.getConfigs()) { + IStorageAdapter adapter = StorageFactory.get(item.getType()); + adapter.loadConfig(item.getConfig()); + StorageFactory.register(item.getName(), adapter); + } } } diff --git a/src/main/java/com/ycwl/basic/storage/starter/config/OverallStorageConfig.java b/src/main/java/com/ycwl/basic/storage/starter/config/OverallStorageConfig.java index ea1d2fe..fec70b0 100644 --- a/src/main/java/com/ycwl/basic/storage/starter/config/OverallStorageConfig.java +++ b/src/main/java/com/ycwl/basic/storage/starter/config/OverallStorageConfig.java @@ -5,11 +5,11 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.List; -import java.util.Map; @Component @ConfigurationProperties(prefix = "storage") @Data public class OverallStorageConfig { + private String defaultUse; private List configs; } diff --git a/src/main/java/com/ycwl/basic/storage/starter/config/StorageConfigItem.java b/src/main/java/com/ycwl/basic/storage/starter/config/StorageConfigItem.java index 745b14f..030485a 100644 --- a/src/main/java/com/ycwl/basic/storage/starter/config/StorageConfigItem.java +++ b/src/main/java/com/ycwl/basic/storage/starter/config/StorageConfigItem.java @@ -1,5 +1,6 @@ package com.ycwl.basic.storage.starter.config; +import com.ycwl.basic.storage.enums.StorageType; import lombok.Data; import java.util.Map; @@ -7,6 +8,6 @@ import java.util.Map; @Data public class StorageConfigItem { private String name; - private String type; + private StorageType type; private Map config; } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index c40828e..ee85e46 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -121,6 +121,7 @@ face: # 存储 storage: + defaultUse: "assets" configs: - name: "faces" type: "ALI_OSS" diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 2fc85f0..53cdf06 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -119,6 +119,7 @@ face: # 存储 storage: + defaultUse: "assets" configs: - name: "faces" type: "ALI_OSS"