From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master
---
jnpf-file/jnpf-file-storage/src/main/java/jnpf/fileStorage/SeaweedFsStorageRegistrar.java | 76 ++++++++++++++++++++++++++++++++++++++
1 files changed, 76 insertions(+), 0 deletions(-)
diff --git a/jnpf-file/jnpf-file-storage/src/main/java/jnpf/fileStorage/SeaweedFsStorageRegistrar.java b/jnpf-file/jnpf-file-storage/src/main/java/jnpf/fileStorage/SeaweedFsStorageRegistrar.java
new file mode 100644
index 0000000..81990e6
--- /dev/null
+++ b/jnpf-file/jnpf-file-storage/src/main/java/jnpf/fileStorage/SeaweedFsStorageRegistrar.java
@@ -0,0 +1,76 @@
+package jnpf.fileStorage;
+
+import jakarta.annotation.PostConstruct;
+import jakarta.annotation.PreDestroy;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.x.file.storage.core.FileStorageService;
+import org.dromara.x.file.storage.core.platform.FileStorage;
+import org.dromara.x.file.storage.core.platform.MinioFileStorage;
+import org.dromara.x.file.storage.core.platform.MinioFileStorageClientFactory;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class SeaweedFsStorageRegistrar {
+ private final SeaweedFsStorageProperties properties;
+ private final FileStorageService fileStorageService;
+ private final List<MinioFileStorage> registeredStorages = new ArrayList<>();
+
+ @PostConstruct
+ void register() {
+ for (SeaweedFsStorageProperties.SeaweedFsConfig config : properties.getSeaweedfs()) {
+ if (!Boolean.TRUE.equals(config.getEnableStorage())) {
+ continue;
+ }
+ validate(config);
+ synchronized (fileStorageService.getFileStorageList()) {
+ ensureUnique(config.getPlatform());
+ MinioFileStorageClientFactory clientFactory = new MinioFileStorageClientFactory(config);
+ MinioFileStorage storage = new MinioFileStorage(config, clientFactory);
+ fileStorageService.getFileStorageList().add(storage);
+ registeredStorages.add(storage);
+ }
+ log.info("SeaweedFS 瀛樺偍骞冲彴宸叉敞鍐�: platform={}, bucket={}",
+ config.getPlatform(), config.getBucketName());
+ }
+ }
+
+ @PreDestroy
+ void unregister() {
+ for (MinioFileStorage storage : registeredStorages) {
+ fileStorageService.getFileStorageList().remove(storage);
+ storage.close();
+ }
+ registeredStorages.clear();
+ }
+
+ private void ensureUnique(String platform) {
+ for (FileStorage storage : fileStorageService.getFileStorageList()) {
+ if (platform.equals(storage.getPlatform())) {
+ throw new IllegalStateException("鏂囦欢瀛樺偍骞冲彴鏍囪瘑閲嶅: " + platform);
+ }
+ }
+ }
+
+ private void validate(SeaweedFsStorageProperties.SeaweedFsConfig config) {
+ requireText(config.getPlatform(), "platform");
+ if (!config.getPlatform().startsWith("seaweedfs-")) {
+ throw new IllegalStateException("SeaweedFS 骞冲彴鏍囪瘑蹇呴』浠� seaweedfs- 寮�澶�");
+ }
+ requireText(config.getAccessKey(), "access-key");
+ requireText(config.getSecretKey(), "secret-key");
+ requireText(config.getEndPoint(), "end-point");
+ requireText(config.getBucketName(), "bucket-name");
+ }
+
+ private void requireText(String value, String field) {
+ if (value == null || value.trim().isEmpty()) {
+ throw new IllegalStateException("SeaweedFS 閰嶇疆缂哄皯 " + field);
+ }
+ }
+}
--
Gitblit v1.8.0