From bc7e49a94c1b1a45b58d2916db7949998516af16 Mon Sep 17 00:00:00 2001 From: zhaojun1998 Date: Sun, 8 Sep 2019 21:07:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B3=A8=E9=87=8A,=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/config/StorageTypeFactory.java | 13 ++++++---- .../common/controller/FileController.java | 24 ++----------------- .../common/service/SystemConfigService.java | 2 +- 3 files changed, 12 insertions(+), 27 deletions(-) diff --git a/src/main/java/im/zhaojun/common/config/StorageTypeFactory.java b/src/main/java/im/zhaojun/common/config/StorageTypeFactory.java index 5d170ed..bd6c0e3 100644 --- a/src/main/java/im/zhaojun/common/config/StorageTypeFactory.java +++ b/src/main/java/im/zhaojun/common/config/StorageTypeFactory.java @@ -10,9 +10,6 @@ import org.springframework.stereotype.Component; import java.util.Map; -/** - * 存储类型工厂类 - */ @Component public class StorageTypeFactory implements ApplicationContextAware { @@ -20,13 +17,21 @@ public class StorageTypeFactory implements ApplicationContextAware { private static ApplicationContext applicationContext; + /** + * 项目启动时执行 + */ @Override public void setApplicationContext(ApplicationContext act) throws BeansException { applicationContext = act; + + // 获取 Spring 容器中所有 FileService 类型的类 storageTypeEnumFileServiceMap = act.getBeansOfType(FileService.class); } - public static FileService getTrafficMode(StorageTypeEnum type) { + /** + * 获取指定存储类型 Service + */ + public static FileService getStorageTypeService(StorageTypeEnum type) { FileService result = null; for (FileService fileService : storageTypeEnumFileServiceMap.values()) { if (fileService.getStorageTypeEnum() == type) { diff --git a/src/main/java/im/zhaojun/common/controller/FileController.java b/src/main/java/im/zhaojun/common/controller/FileController.java index 4e120ae..65242db 100644 --- a/src/main/java/im/zhaojun/common/controller/FileController.java +++ b/src/main/java/im/zhaojun/common/controller/FileController.java @@ -118,7 +118,7 @@ public class FileController { public ResultBean updateConfig() { SystemConfig systemConfig = systemConfigService.getSystemConfig(); StorageTypeEnum storageStrategy = systemConfig.getStorageStrategy(); - fileService = StorageTypeFactory.getTrafficMode(storageStrategy); + fileService = StorageTypeFactory.getStorageTypeService(storageStrategy); log.info("当前启用存储类型: {}", storageStrategy.getDescription()); initSearchCache(); return ResultBean.success(); @@ -142,26 +142,6 @@ public class FileController { @GetMapping("/search") public ResultBean search(@RequestParam("path") String name) throws Exception { - return ResultBean.success(fileService.search(name)); - } - - private void initSearchCache() { - StorageTypeEnum storageStrategy = systemConfigService.getSystemConfig().getStorageStrategy(); - FileService fileService = StorageTypeFactory.getTrafficMode(storageStrategy); - - ThreadUtil.execute(() -> { - try { - long startTime = System.currentTimeMillis(); - log.info("初始化 {} 文件列表", storageStrategy.getDescription()); - List fileItemList = fileService.selectAllFileList(); - long endTime = System.currentTimeMillis(); - log.info("完成 {} 缓存, 共缓存了 {} 个文件夹, 使用时间 {} 秒", - storageStrategy.getDescription(), - fileItemList.size(), - (endTime - startTime) / 1000); - } catch (Exception e) { - log.info("初始化 " + storageStrategy.getDescription() + " 文件列表异常", e); - } - }); + return ResultBean.success(fileService.search(URLUtil.decode(name))); } } diff --git a/src/main/java/im/zhaojun/common/service/SystemConfigService.java b/src/main/java/im/zhaojun/common/service/SystemConfigService.java index 23e9a36..2d33927 100644 --- a/src/main/java/im/zhaojun/common/service/SystemConfigService.java +++ b/src/main/java/im/zhaojun/common/service/SystemConfigService.java @@ -21,7 +21,7 @@ public class SystemConfigService { public FileService getCurrentFileService() { SystemConfig systemConfig = getSystemConfig(); StorageTypeEnum storageStrategy = systemConfig.getStorageStrategy(); - return StorageTypeFactory.getTrafficMode(storageStrategy); + return StorageTypeFactory.getStorageTypeService(storageStrategy); } } \ No newline at end of file