默认存储方式

This commit is contained in:
Jerry Yan 2024-12-27 11:28:19 +08:00
parent 201a6617ac
commit fdf35224dd
8 changed files with 33 additions and 24 deletions

View File

@ -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;

View File

@ -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<String, IStorageAdapter> definedName = new HashMap<>();
protected static Map<String, IStorageAdapter> 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);
}
}

View File

@ -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 {

View File

@ -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<String, String> 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);
}
}
}

View File

@ -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<StorageConfigItem> configs;
}

View File

@ -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<String, String> config;
}

View File

@ -121,6 +121,7 @@ face:
# 存储
storage:
defaultUse: "assets"
configs:
- name: "faces"
type: "ALI_OSS"

View File

@ -119,6 +119,7 @@ face:
# 存储
storage:
defaultUse: "assets"
configs:
- name: "faces"
type: "ALI_OSS"