UNPKG

create-base-teek-theme

Version:

``` npm create base-teek-theme@latest my-first-blog ```

219 lines (165 loc) 6.7 kB
--- date: 2025-04-15 10:39:21 title: 模板转换器 permalink: /pages/da4bbe top: 3 tags: - Spring Boot author: name: 华总 link: https://xiaoying.org.cn categories: - 后端 - 功能扩展 --- # Spring Boot Velocity转换器 ## 简介 这是一个用于将Java、Vue、TS和XML文件转换为Velocity模板。这个starter可以帮助开发者快速实现代码生成功能,特别适用于需要从实体类生成VO类、表单类等场景。 ## 特性 - 支持多种文件类型转换:Java、Vue、TS、XML - 自动检测文件类型并应用相应的转换规则 - 支持实体类与VO类的转换 - 支持包名、模块名的自定义替换 - 支持批量处理(ZIP文件) - 自动变量替换和模板生成 ## 安装 ::: tip 依赖可能非最新版本,请前往maven获取最新版本 [Spring Boot 2](https://central.sonatype.com/artifact/io.github.liyao52033/velocityConverter-spring-boot-starter)地址 [Spring Boot 3](https://central.sonatype.com/artifact/io.github.liyao52033/liyao-spring-boot3-starter-velocityConverter)地址 ::: 在您的Spring Boot项目的`pom.xml`中添加以下依赖 Spring Boot 2(java8) ```xml <dependency> <groupId>io.github.liyao52033</groupId> <artifactId>velocityConverter-spring-boot-starter</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>io.github.liyao52033</groupId> <artifactId>ErrorCode-spring-boot-starter</artifactId> <version>1.2.0</version> </dependency> ``` Spring Boot 3(java17) ```xml <dependency> <groupId>io.github.liyao52033</groupId> <artifactId>liyao-spring-boot3-starter-velocityConverter</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>io.github.liyao52033</groupId> <artifactId>liyao-spring-boot3-starter-ErrorCode</artifactId> <version>1.2.0</version> </dependency> ``` ## 配置 该starter会自动配置所需的Bean,包括: - `TemplateConverter`:核心转换器,处理文件转换逻辑 - `TemplateConverterConfig`:转换配置,包含转换规则和路径设置 - `TemplateVariableReplacer`:变量替换器,处理模板中的变量替换 ## 使用方法 ### 基本用法 ```java @RestController @RequestMapping("/api/template") public class TemplateController { @Resource private TemplateConverter templateConverter; /** * Java文件转Velocity模板 * @param file 文件 * @param entityName 实体名 * @param packageName 包名 * @param moduleName 模块名 * @param outputFileName 输出文件名 * @return 转换后的模板文件 */ @PostMapping( "/convertJavaToVelocity") @Operation(summary = "Java文件转Velocity模板") public BaseResponse<Map<String, String>> convertJavaToVelocity( @RequestParam("file") MultipartFile file, @RequestParam(value = "entityName") String entityName, @RequestParam(value = "packageName") String packageName, @RequestParam(value = "moduleName") String moduleName, @RequestParam(value = "outputFileName", required = false) String outputFileName) { return templateConverter.convertJavaToVelocity(file, entityName, packageName, moduleName, outputFileName); } /** * Zip文件转Velocity模板 * @param file 文件 * @param entityName 实体名 * @param packageName 包名 * @param moduleName 模块名 * @param outputFileName 输出文件名 * @return 转换后的模板文件 */ @PostMapping( "/convertZipToVelocity") @Operation(summary = "Zip文件转Velocity模板") public BaseResponse<List<Map<String, String>>> convertZipToVelocity( @RequestParam("file") MultipartFile file, @RequestParam(value = "entityName") String entityName, @RequestParam(value = "packageName") String packageName, @RequestParam(value = "moduleName") String moduleName, @RequestParam(value = "outputFileName", required = false) String outputFileName) { return templateConverter.convertZipToVelocity(file, entityName, packageName, moduleName, outputFileName); } } ``` ### 参数说明 - `file`:要转换的文件(Java、Vue、TS、XML)或ZIP压缩包 - `entityName`:实体类名称,用于变量替换 - `packageName`:包名,用于替换原文件中的包声明 - `moduleName`:模块名,用于构建包路径 - `outputFileName`:(可选)输出文件名,不指定时使用原文件名 ### 文件类型支持 转换器会自动检测以下文件类型并应用相应的转换规则: - **Java**:处理类定义、字段、方法等 - **Vue**:处理组件、模板、脚本等 - **TypeScript**:处理类、接口、导入语句等 - **XML**:处理标签、属性等 ### 批量处理 对于需要批量转换的场景,可以将多个文件打包成ZIP文件上传,系统会自动处理所有支持的文件类型。 ## 高级功能 ### 自定义转换规则 如果需要自定义转换规则,可以扩展`TemplateConverterConfig`类: ```java @Configuration public class CustomTemplateConverterConfig extends TemplateConverterConfig { @Override public String convertJavaToVelocity(String javaContent, String entityName, String packageName, String moduleName) { // 先调用父类方法进行基本转换 String result = super.convertJavaToVelocity(javaContent, entityName, packageName, moduleName); // 添加自定义转换逻辑 result = customizeTemplate(result); return result; } private String customizeTemplate(String content) { // 实现自定义转换逻辑 return content; } } ``` ### 自定义变量替换 如果需要自定义变量替换规则,可以扩展`TemplateVariableReplacer`类: ```java @Configuration public class CustomTemplateVariableReplacer extends TemplateVariableReplacer { @Override public String replace(String content, String entityName) { // 先调用父类方法进行基本替换 String result = super.replace(content, entityName); // 添加自定义替换逻辑 result = customizeReplacement(result, entityName); return result; } private String customizeReplacement(String content, String entityName) { // 实现自定义替换逻辑 return content; } } ```