create-base-teek-theme
Version:
``` npm create base-teek-theme@latest my-first-blog ```
219 lines (165 loc) • 6.7 kB
Markdown
---
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
public class TemplateController {
private TemplateConverter templateConverter;
/**
* Java文件转Velocity模板
* @param file 文件
* @param entityName 实体名
* @param packageName 包名
* @param moduleName 模块名
* @param outputFileName 输出文件名
* @return 转换后的模板文件
*/
public BaseResponse<Map<String, String>> convertJavaToVelocity(
MultipartFile file,
String entityName,
String packageName,
String moduleName,
String outputFileName)
{
return templateConverter.convertJavaToVelocity(file, entityName, packageName, moduleName, outputFileName);
}
/**
* Zip文件转Velocity模板
* @param file 文件
* @param entityName 实体名
* @param packageName 包名
* @param moduleName 模块名
* @param outputFileName 输出文件名
* @return 转换后的模板文件
*/
public BaseResponse<List<Map<String, String>>> convertZipToVelocity(
MultipartFile file,
String entityName,
String packageName,
String moduleName,
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
public class CustomTemplateConverterConfig extends TemplateConverterConfig {
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
public class CustomTemplateVariableReplacer extends TemplateVariableReplacer {
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;
}
}
```