Spring CRUD Generator 现在拥有完整的 Demo 项目(基于真实规范生成)

发布: (2026年2月18日 GMT+8 21:56)
5 分钟阅读
原文: Dev.to

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,这个演示仓库是最快的方式来回答:

“这就是我想要的项目骨架吗?”

欢迎反馈

如果您发现生成的输出中有任何想要改进的地方(结构、约定、默认值、功能开关),请在主仓库中打开 issue 或发起讨论。发布演示项目的全部意义在于透明——并且让基于真实反馈的迭代更加容易。

0 浏览
Back to Blog

相关文章

阅读更多 »