Spring CRUD Generator 现在拥有完整的 Demo 项目(基于真实规范生成)
Source: Dev.to
当你构建代码生成器时,最难的并不是实现功能——而是赢得信任。
人们想要得到以下问题的答案:
- “它真的能端到端工作吗?”
- “输出是否一致且可以构建?”
- “生成的代码到底长什么样?”
- “它足够稳定,可以在真实项目中尝试吗?”
这就是我添加专门的 Spring CRUD Generator Demo 仓库的原因:这是一个完整、可构建的项目,主要用于演示生成器能够可靠工作并产出符合生产环境的代码。
什么是演示项目?
Spring CRUD Generator Demo 是一个仓库,用于在真实的环境中展示 Spring CRUD Generator 生成的输出。它旨在作为一个参考输出,供您随时检查:
- 浏览包结构和分层
- 查看生成的 DTO、验证、映射、服务、控制器
- 了解迁移、资源、测试、Docker 构件在真实仓库中的表现
- 确认项目能够像普通的 Spring Boot 应用一样构建
简而言之:它是一个“以例证实”的仓库。
用于生成演示的规范
演示项目是从主生成器仓库的完整示例 CRUD 规范生成的。这意味着演示并不是挑选的最小案例——它是基于一个启用广泛功能并生成有意义代码库的规范生成的。
演示中已启用的功能(全部开启)
该演示构建为功能丰富的示例。其目的是展示一个从配置生成的“全栈”后端基线,包括:
- 数据库: PostgreSQL
- Java: 21
- Spring Boot: 4.x
- 乐观锁: 已启用(带重试/退避配置)
- Docker: Dockerfile +
docker‑compose(应用 + 数据库) - 缓存: 使用 Redis 并设置过期时间
- OpenAPI: API 规范 + 生成的资源
- GraphQL: 已启用(带标量配置)
- 错误响应: 简单格式
- 迁移: 已启用
- 测试: 单元测试 + 测试数据生成(Instancio)
- 其他属性: REST 基础路径
/api/v1、OSIV 已禁用,等等
以下是配置/规范上下文中使用的完整功能快照:
database: postgresql
javaVersion: 21
springBootVersion: 4
optimisticLocking: true
docker:
dockerfile: true
dockerCompose: true
app:
image: eclipse-temurin
port: 8080
db:
image: postgres
port: 5432
tag: latest
cache:
enabled: true
type: REDIS
expiration: 5
openApi:
apiSpec: true
generateResources: true
graphql:
enabled: true
scalarConfig: true
errorResponse: simple
migrationScripts: true
tests:
unit: true
dataGenerator: instancio
additionalProperties:
rest.basePath: /api/v1
optimisticLocking.retry.config: true
optimisticLocking.retry.maxAttempts: 5
optimisticLocking.backoff.delayMs: 100
optimisticLocking.backoff.multiplier: 2.0
optimisticLocking.backoff.maxDelayMs: 1000
spring.jpa.open-in-view: false
为什么演示仓库很重要(尤其是对生成器)
文档和截图有帮助,但它们不能替代一个真实的代码库,你可以:
- 克隆
- 构建
- 运行
- 检查
- 跨版本比较
演示仓库为评估生成器的输出质量和一致性提供了一个稳定的基准。它也让回归检测更容易:随着生成器的演进,你可以重新生成并快速看到哪些地方发生了变化。
如果你正在考虑尝试 Spring CRUD Generator,这个演示仓库是最快的方式来回答:
“这就是我想要的项目骨架吗?”
-
Spring CRUD Generator(主仓库):
https://github.com/mzivkovicdev/spring-crud-generator -
Spring CRUD Generator 演示:
https://github.com/mzivkovicdev/spring-crud-generator-demo -
用于生成演示的规范(完整示例):
https://github.com/mzivkovicdev/spring-crud-generator/blob/master/docs/examples/crud-spec-full.yaml
欢迎反馈
如果您发现生成的输出中有任何想要改进的地方(结构、约定、默认值、功能开关),请在主仓库中打开 issue 或发起讨论。发布演示项目的全部意义在于透明——并且让基于真实反馈的迭代更加容易。