关于 creating-springboot-projects
creating-springboot-projects 是用于规划和搭建 Spring Boot 4 新项目的技能。它根据项目需求帮助开发者选择架构和基础依赖,并应用随附模板。
主要功能
- 01评估项目复杂度与约束
- 02从五种架构模式中选择
- 03确定 Spring Boot 4 配置与依赖
- 04应用随附项目模板
- 05查阅架构与功能参考资料
适用场景
- 01规划新的 Spring Boot 4 服务
- 02为持续发展的应用选择结构
- 03使用可复用模板搭建模块
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ a-pavithraa/ springboot-skills-marketplace --skill creating-springboot-projects安装后在 Claude Code 中输入/creating-springboot-projects确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/api-versioning-config.javabase-entity.javacontroller.javadocker-compose.ymlexception-handler.javaflyway-migration.sqlhttp-service-client.javamodularity-test.javapackage-info-jspecify.javapom-additions.xmlrepository.javaresilience-service.javaresttestclient-test.javarich-entity.javaservice-cqrs.javaspring-converter.javatestcontainers-test.javavalue-object.javareferences/architecture-guide.mdspring-boot-4-features.md详细介绍
创建 Spring Boot 项目
用途
使用此技能创建新的 Spring Boot 4 项目,或在实现前定义项目结构。当用户需要架构决策、选择 Spring Boot 4 功能,或使用 assets/ 中打包的模板时,此技能很有帮助。
关键规则
- 在评估项目复杂度之前,切勿直接开始实现。
- 默认采用适合领域需求的最简单架构。
- 以 Spring Boot 4 为目标。新项目默认使用 Java 25(当前 LTS)。Spring 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/ 中打包的模板,并且仅在确定包名和模块名后替换占位符。
占位符约定
每个模板都使用 {{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.javaassets/repository.javaassets/base-entity.javaassets/rich-entity.javaassets/value-object.javaassets/spring-converter.javaassets/service-cqrs.javaassets/exception-handler.javaassets/flyway-migration.sqlassets/docker-compose.yml
Boot 4 和模块化模板:
assets/http-service-client.javaassets/api-versioning-config.javaassets/resttestclient-test.javaassets/package-info-jspecify.javaassets/modularity-test.javaassets/resilience-service.javaassets/pom-additions.xmlassets/testcontainers-test.java
步骤 5:填写特定于架构的部分
阅读 references/architecture-guide.md 了解包结构,并应用相应的模板:
layered:保持模块简单,避免过早引入 DDD 抽象package-by-module:按功能分组,并尽量减少共享代码modular-monolith:添加 Modulith 验证和明确的模块 APItomato:在值对象和丰富的领域实体有助于保护重要不变式时添加它们ddd-hexagonal:明确分离应用、领域和基础设施
步骤 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 功能问答