Appearance
Spring Boot Velocity转换器
简介
这是一个用于将Java、Vue、TS和XML文件转换为Velocity模板。这个starter可以帮助开发者快速实现代码生成功能,特别适用于需要从实体类生成VO类、表单类等场景。
特性
- 支持多种文件类型转换:Java、Vue、TS、XML
- 自动检测文件类型并应用相应的转换规则
- 支持实体类与VO类的转换
- 支持包名、模块名的自定义替换
- 支持批量处理(ZIP文件)
- 自动变量替换和模板生成
安装
在您的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>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
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>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
配置
该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);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
参数说明
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;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
自定义变量替换
如果需要自定义变量替换规则,可以扩展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;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19