优化了配置文件
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
package com.example.workutils.biz.mybatis.export;
|
package com.example.workutils.biz.mybatis.export;
|
||||||
|
|
||||||
import com.example.workutils.biz.scanner.config.ScanConfigBO;
|
import com.example.workutils.biz.scanner.config.ScanConfigBO;
|
||||||
import com.example.workutils.system.config.WorkUtilsProperties;
|
|
||||||
import com.example.workutils.biz.mybatis.model.MybatisTagBO;
|
import com.example.workutils.biz.mybatis.model.MybatisTagBO;
|
||||||
import com.example.workutils.biz.output.OutputService;
|
import com.example.workutils.biz.output.OutputService;
|
||||||
import com.example.workutils.biz.scanner.service.FileOperationService;
|
import com.example.workutils.biz.scanner.service.FileOperationService;
|
||||||
@@ -36,9 +35,6 @@ public class MyBatisExportService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private OutputService outputService;
|
private OutputService outputService;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private WorkUtilsProperties properties;
|
|
||||||
|
|
||||||
// ==================== 常量定义 ====================
|
// ==================== 常量定义 ====================
|
||||||
|
|
||||||
/** SQL标签类型 */
|
/** SQL标签类型 */
|
||||||
|
|||||||
@@ -12,8 +12,7 @@ import java.time.format.DateTimeFormatter;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工具集配置属性
|
* 工具集配置属性(配置项在 application.yml 中定义)
|
||||||
* 绑定application.yml或application.properties中以workutils为前缀的配置项
|
|
||||||
*
|
*
|
||||||
* @author system
|
* @author system
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
@@ -23,108 +22,51 @@ import java.util.List;
|
|||||||
@Data
|
@Data
|
||||||
public class WorkUtilsProperties {
|
public class WorkUtilsProperties {
|
||||||
|
|
||||||
/** 基础目录,默认为D:/workspace/workutils */
|
/** 基础目录 */
|
||||||
private String baseDirectory = "D:/workspace/workutils";
|
private String baseDirectory;
|
||||||
|
|
||||||
/** 配置文件目录,相对于基础目录 */
|
/** 配置文件目录,相对于基础目录 */
|
||||||
private String configDirectory = "src/main/resources/config";
|
private String configDirectory;
|
||||||
|
|
||||||
/** 导出文件根目录 */
|
/** 导出文件根目录 */
|
||||||
private String exportDirectory = "D:/workspace/workutils/export";
|
private String exportDirectory;
|
||||||
|
|
||||||
/** 项目路径配置文件名 */
|
/** 项目路径配置文件名 */
|
||||||
private String projectPathsFile = "代码仓库项目路径.txt";
|
private String projectPathsFile;
|
||||||
|
|
||||||
/** 工具启用/禁用配置 */
|
/** 工具启用/禁用配置 */
|
||||||
private ToolsConfig tools;
|
private ToolsConfig tools;
|
||||||
|
|
||||||
/** 日期格式:yyyyMMdd */
|
// ==================== 路径解析方法 ====================
|
||||||
private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");
|
|
||||||
|
|
||||||
/** 时间格式:yyyyMMddHHmmss */
|
|
||||||
private static final DateTimeFormatter TIMESTAMP_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取项目路径配置文件的完整路径
|
|
||||||
*
|
|
||||||
* @return 项目路径配置文件路径
|
|
||||||
*/
|
|
||||||
public Path getProjectPathsFilePath() {
|
public Path getProjectPathsFilePath() {
|
||||||
return Paths.get(baseDirectory, configDirectory, projectPathsFile);
|
return Paths.get(baseDirectory, configDirectory, projectPathsFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取导出根目录
|
|
||||||
*
|
|
||||||
* @return 导出根目录路径
|
|
||||||
*/
|
|
||||||
public Path getExportBasePath() {
|
public Path getExportBasePath() {
|
||||||
return Paths.get(exportDirectory);
|
return Paths.get(exportDirectory);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取当天的导出目录
|
|
||||||
* 格式:导出根目录/yyyyMMdd/
|
|
||||||
*
|
|
||||||
* @return 当天日期目录路径
|
|
||||||
*/
|
|
||||||
public Path getTodayExportPath() {
|
public Path getTodayExportPath() {
|
||||||
String dateDir = LocalDate.now().format(DATE_FORMATTER);
|
return getExportBasePath().resolve(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")));
|
||||||
return getExportBasePath().resolve(dateDir);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 生成带时间戳的导出文件名
|
|
||||||
* 格式:prefix_yyyyMMddHHmmss.extension
|
|
||||||
*
|
|
||||||
* @param prefix 文件名前缀
|
|
||||||
* @param extension 文件扩展名
|
|
||||||
* @return 带时间戳的文件名
|
|
||||||
*/
|
|
||||||
public String generateExportFileName(String prefix, String extension) {
|
|
||||||
String timestamp = LocalDateTime.now().format(TIMESTAMP_FORMATTER);
|
|
||||||
return String.format("%s_%s.%s", prefix, timestamp, extension);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 解析导出文件的完整路径
|
|
||||||
* 格式:导出根目录/yyyyMMdd/prefix_yyyyMMddHHmmss.extension
|
|
||||||
*
|
|
||||||
* @param fileName 文件名
|
|
||||||
* @return 文件的完整路径
|
|
||||||
*/
|
|
||||||
public Path resolveExportPath(String fileName) {
|
public Path resolveExportPath(String fileName) {
|
||||||
return getTodayExportPath().resolve(fileName);
|
return getTodayExportPath().resolve(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 解析导出文件的完整路径(带时间戳)
|
|
||||||
* 格式:导出根目录/yyyyMMdd/prefix_yyyyMMddHHmmss.extension
|
|
||||||
*
|
|
||||||
* @param prefix 文件名前缀
|
|
||||||
* @param extension 文件扩展名
|
|
||||||
* @return 文件的完整路径
|
|
||||||
*/
|
|
||||||
public Path resolveExportPath(String prefix, String extension) {
|
public Path resolveExportPath(String prefix, String extension) {
|
||||||
String fileName = generateExportFileName(prefix, extension);
|
String timestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
|
||||||
return getTodayExportPath().resolve(fileName);
|
return resolveExportPath(String.format("%s_%s.%s", prefix, timestamp, extension));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// ==================== 内部配置类 ====================
|
||||||
* 工具启用/禁用配置
|
|
||||||
*/
|
|
||||||
@Data
|
@Data
|
||||||
public static class ToolsConfig {
|
public static class ToolsConfig {
|
||||||
/**
|
/** 启用的工具ID列表(白名单),设置后仅加载这些工具 */
|
||||||
* 启用的工具ID列表,设置后仅加载这些工具
|
|
||||||
* 示例: ["scan", "mybatis", "batch", "git-health", "mybatis-generator"]
|
|
||||||
*/
|
|
||||||
private List<String> enabled;
|
private List<String> enabled;
|
||||||
|
/** 禁用的工具ID列表(黑名单),enabled优先级高于disabled */
|
||||||
/**
|
|
||||||
* 禁用的工具ID列表,设置后排除这些工具
|
|
||||||
* enabled优先级高于disabled
|
|
||||||
*/
|
|
||||||
private List<String> disabled;
|
private List<String> disabled;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+18
-18
@@ -38,17 +38,17 @@ workutils/
|
|||||||
```
|
```
|
||||||
src/main/java/com/example/workutils/
|
src/main/java/com/example/workutils/
|
||||||
├── WorkUtilsApplication.java # 应用启动入口
|
├── WorkUtilsApplication.java # 应用启动入口
|
||||||
├── config/
|
├── system/ # 系统框架层
|
||||||
│ └── WorkUtilsProperties.java # 全局配置属性类
|
│ ├── ConsoleHelper.java # 控制台交互工具类(消除重复I/O代码)
|
||||||
├── tool/
|
│ ├── config/
|
||||||
|
│ │ └── WorkUtilsProperties.java # 全局配置属性类
|
||||||
|
│ ├── menu/
|
||||||
|
│ │ └── MenuRunner.java # 交互式菜单运行器
|
||||||
|
│ └── tool/
|
||||||
│ ├── Tool.java # 工具策略接口
|
│ ├── Tool.java # 工具策略接口
|
||||||
│ ├── AbstractTool.java # 工具基类(模板方法模式)
|
│ ├── AbstractTool.java # 工具基类(模板方法模式)
|
||||||
│ ├── ToolRegistry.java # 工具注册中心
|
│ └── ToolRegistry.java # 工具注册中心
|
||||||
│ └── ConsoleHelper.java # 控制台交互工具类(消除重复I/O代码)
|
└── biz/ # 业务模块层
|
||||||
├── menu/
|
|
||||||
│ └── api/
|
|
||||||
│ └── MenuRunner.java # 交互式菜单运行器
|
|
||||||
└── biz/
|
|
||||||
├── git/ # Git操作业务模块
|
├── git/ # Git操作业务模块
|
||||||
│ ├── config/
|
│ ├── config/
|
||||||
│ │ └── GitOptimizationConfig.java # Git性能优化配置
|
│ │ └── GitOptimizationConfig.java # Git性能优化配置
|
||||||
@@ -112,22 +112,22 @@ src/main/java/com/example/workutils/
|
|||||||
- 支持命令行模式,通过 `ToolRegistry.getToolByCommand()` 按命令名分发到对应 Tool
|
- 支持命令行模式,通过 `ToolRegistry.getToolByCommand()` 按命令名分发到对应 Tool
|
||||||
- 不依赖任何具体业务 Service,完全解耦
|
- 不依赖任何具体业务 Service,完全解耦
|
||||||
|
|
||||||
#### `WorkUtilsProperties.java`
|
---
|
||||||
|
|
||||||
|
### 3.2 系统框架层(`system/`)
|
||||||
|
|
||||||
|
#### `config/WorkUtilsProperties.java`
|
||||||
- **作用**: 全局配置属性类,绑定 `application.yml` 中 `workutils` 前缀的配置
|
- **作用**: 全局配置属性类,绑定 `application.yml` 中 `workutils` 前缀的配置
|
||||||
- **功能**:
|
- **功能**:
|
||||||
- 管理基础目录、配置目录、导出目录路径
|
- 管理基础目录、配置目录、导出目录路径
|
||||||
- 提供带日期时间戳的导出文件路径生成
|
- 提供带日期时间戳的导出文件路径生成
|
||||||
- 管理工具启用/禁用白名单和黑名单
|
- 管理工具启用/禁用白名单和黑名单
|
||||||
|
|
||||||
---
|
#### `tool/Tool.java`
|
||||||
|
|
||||||
### 3.2 工具框架层(`tool/`)
|
|
||||||
|
|
||||||
#### `Tool.java`
|
|
||||||
- **作用**: 工具策略接口,所有可插拔工具需实现此接口
|
- **作用**: 工具策略接口,所有可插拔工具需实现此接口
|
||||||
- **核心方法**: `getId()`、`getName()`、`getMenuOptions()`、`execute()`、`getCommandName()`(命令行模式命令名)、`executeCommand()`(命令行模式执行)
|
- **核心方法**: `getId()`、`getName()`、`getMenuOptions()`、`execute()`、`getCommandName()`(命令行模式命令名)、`executeCommand()`(命令行模式执行)
|
||||||
|
|
||||||
#### `AbstractTool.java`
|
#### `tool/AbstractTool.java`
|
||||||
- **作用**: 工具基类,使用模板方法模式
|
- **作用**: 工具基类,使用模板方法模式
|
||||||
- **功能**: 提供标准菜单交互循环(显示菜单→读取选择→处理选择→循环),子类只需实现 `handleChoice()`
|
- **功能**: 提供标准菜单交互循环(显示菜单→读取选择→处理选择→循环),子类只需实现 `handleChoice()`
|
||||||
- **控制台I/O**: 委托给 `ConsoleHelper`,子类通过 `printMenuTitle()`、`displayMenu()` 等 protected 方法间接调用
|
- **控制台I/O**: 委托给 `ConsoleHelper`,子类通过 `printMenuTitle()`、`displayMenu()` 等 protected 方法间接调用
|
||||||
@@ -136,13 +136,13 @@ src/main/java/com/example/workutils/
|
|||||||
- **作用**: 控制台交互工具类(静态方法)
|
- **作用**: 控制台交互工具类(静态方法)
|
||||||
- **功能**: 统一 `MenuRunner` 和 `AbstractTool` 中重复的控制台 I/O 方法,消除代码重复
|
- **功能**: 统一 `MenuRunner` 和 `AbstractTool` 中重复的控制台 I/O 方法,消除代码重复
|
||||||
|
|
||||||
#### `ToolRegistry.java`
|
#### `tool/ToolRegistry.java`
|
||||||
- **作用**: 工具注册中心,Spring 自动发现 `Tool` Bean
|
- **作用**: 工具注册中心,Spring 自动发现 `Tool` Bean
|
||||||
- **功能**: 根据配置过滤启用/禁用工具,支持白名单(enabled)和黑名单(disabled)模式,同时维护按命令名(`getCommandName()`)的索引,支持命令行模式按命令名分发
|
- **功能**: 根据配置过滤启用/禁用工具,支持白名单(enabled)和黑名单(disabled)模式,同时维护按命令名(`getCommandName()`)的索引,支持命令行模式按命令名分发
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 3.3 菜单层(`menu/`)
|
### 3.3 菜单层(`system/menu/`)
|
||||||
|
|
||||||
#### `MenuRunner.java`
|
#### `MenuRunner.java`
|
||||||
- **作用**: 交互式主菜单运行器
|
- **作用**: 交互式主菜单运行器
|
||||||
|
|||||||
Reference in New Issue
Block a user