SuperAPI AI 工具集

creating-springboot-projects

编程与开发

查看项目

更新于 10-15 09:45

技能介绍

用途

该技能用于创建新的 Spring Boot 4 项目,或在实现之前定义项目结构。当用户需要架构决策、Spring Boot 4 特性选择,或需要使用 assets/ 中捆绑的模板时,该技能能提供帮助。

关键规则

  • 在评估项目复杂度之前,绝不直接进入实现。
  • 默认采用适合该领域的最简单架构。
  • 以 Spring Boot 4 为目标。新项目默认使用 Java 25(当前 LTS)。Boot 4 的官方基线是 Java 17——当用户要求时,可接受 Java 21(上一个 LTS)或 Java 17。Java 26 是最新的特性版本(GA 2026-03-17),但属于非 LTS;仅当项目跟踪非 LTS Java 时才选择它。
  • 在选择更高复杂度的架构或可选框架特性之前,先阅读参考文件。
  • 复用 assets/ 中的模板,而不是从头重写相同的脚手架。

工作流程

第 1 步:评估项目形态

首先收集项目约束:

  • 领域复杂度:简单 CRUD、中等工作流,还是丰富的领域规则。
  • 团队规模:1-3 人、3-10 人,还是 10 人以上。
  • 预期生命周期:数月、1-2 年,还是 5 年以上。
  • 类型安全需求:基础校验,还是强值对象建模。
  • 限界上下文:单一领域还是多个功能区域。
  • 持久化与基础设施需求:数据库选择、迁移工具、本地开发环境搭建。

第 2 步:选择架构

使用以下矩阵作为默认决策辅助。如果选择不明显,请先阅读 references/architecture-guide.md 再继续。

模式 适用场景 复杂度
layered CRUD 服务、原型、MVP 低
package-by-module 3-5 个不同功能且中等增长 低-中
modular-monolith 模块边界重要且 Spring Modulith 合理 中
tomato 丰富领域建模、值对象、更强类型安全 中-高
ddd-hexagonal 复杂领域、CQRS、强基础设施隔离 高

tomato 是一种值对象密集的模块化单体:JPA 实体嵌入 VO,校验位于 VO 构造函数中,Spring 转换器在请求边界绑定 VO。完整定义见 references/architecture-guide.md。

第 3 步:定义初始 Boot 4 设置

使用 Spring Initializr 并记录基线:

  • 项目:Maven 或 Gradle
  • 语言:Java
  • Spring Boot:4.1.x
  • Java:25(推荐——当前 LTS)。Boot 4 最低为 Java 17;上一个 LTS 用 21,更严格兼容用 17。Java 26(GA 2026-03-17)是最新特性版本,但为非 LTS。

大多数项目的基线依赖:

  • Spring Web MVC
  • Validation
  • 如需持久化则使用 Spring Data JPA
  • Flyway 或 Liquibase
  • 数据库驱动
  • Spring Boot Actuator
  • 用于集成测试的 Testcontainers

基于架构或特性的可选依赖:

  • 用于模块化单体或 tomato 设计的 Spring Modulith
  • 用于更强架构约束的 ArchUnit
  • 仅当用例需要时,才添加其他 Spring Boot 4 特性

选择前阅读 references/spring-boot-4-features.md:

  • RestTestClient
  • HTTP Service Clients
  • API 版本控制
  • JSpecify 空安全
  • 弹性特性

第 4 步:应用匹配的 assets

使用 assets/ 中捆绑的模板,仅在包名和模块名确定后替换占位符。

占位符约定

每个模板都使用 {{TOKEN}} 占位符。应用前需解析所有占位符——在替换每个占位符之前,模板无法编译。assets/ 中使用的完整集合:

占位符 替换为 示例
{{PACKAGE}} 基础 Java 包 com.acme.shop
{{MODULE}} 功能/模块名(小写) orders
{{NAME}} 领域类型名(PascalCase) Order, ProductSKU
{{TYPE}} 值对象内包装的标量类型 String, Long, BigDecimal
{{FIELD}} 记录字段名(camelCase) code, amount
{{TABLE_NAME}} 数据库表名(用于 JPA @Table) orders
{{TABLE}} 与 {{TABLE_NAME}} 含义相同——仅保留在 flyway-migration.sql 中的旧变体 orders
{{PROJECT_NAME}} 项目 artifactId / docker 前缀(仅用于 docker-compose.yml) shop-api
{{name}} HTTP 服务组标识符——不是 {{NAME}} 的小写变体。仅出现在注释掉的 @ImportHttpServices(group = "...") 示例中。 orders

如果模板使用了此处未列出的占位符,请将其视为拼写错误,并在应用前确认预期值。

核心项目模板:

  • assets/controller.java
  • assets/repository.java
  • assets/base-entity.java
  • assets/rich-entity.java
  • assets/value-object.java
  • assets/spring-converter.java
  • assets/service-cqrs.java
  • assets/exception-handler.java
  • assets/flyway-migration.sql
  • assets/docker-compose.yml

Boot 4 与模块化模板:

  • assets/http-service-client.java
  • assets/api-versioning-config.java
  • assets/resttestclient-test.java
  • assets/package-info-jspecify.java
  • assets/modularity-test.java
  • assets/resilience-service.java
  • assets/pom-additions.xml
  • assets/testcontainers-test.java

第 5 步:填充架构特定部分

阅读 references/architecture-guide.md 了解包结构,并应用匹配的模板:

  • layered:保持模块简单,避免过早的 DDD 抽象
  • package-by-module:按功能分组,保持共享代码最少
  • modular-monolith:添加 Modulith 验证和显式模块 API
  • tomato:在能保护重要不变量的地方添加值对象和丰富领域实体
  • ddd-hexagonal:明确分离 application、domain 和 infrastructure

第 6 步:在需要时移交专门关注点

  • 当用户需要更深入的查询、投影、仓库或关系决策时,使用 spring-data-jpa。
  • 对现有应用程序的升级而非新项目设置,使用 springboot-migration。

参考加载指南

  • 包结构、反模式和升级路径:references/architecture-guide.md
  • Spring Boot 4 特性特定指导:references/spring-boot-4-features.md

输出格式

当用户要求计划或脚手架建议时,返回:

Recommended architecture

  • Pattern:
  • Why:

Initial setup

  • Build tool:
  • Java version:
  • Spring Boot version:
  • Core dependencies:

Assets to apply

  • assets/...

Next implementation steps

  1. ...
  2. ...
  3. ...

何时不使用此技能

  • 迁移现有 Boot 项目
  • 在没有更广泛项目创建工作时进行深度仓库和查询调优
  • 不需要捆绑模板的通用 Spring Boot 特性问答