mcpField
C
creating-springboot-projects

creating-springboot-projects

github.com/a-pavithraa开发8062 次安装今天更新
代码仓库

关于 creating-springboot-projects

creating-springboot-projects 是用于规划和搭建 Spring Boot 4 新项目的技能。它根据项目需求帮助开发者选择架构和基础依赖,并应用随附模板。

主要功能

  1. 01评估项目复杂度与约束
  2. 02从五种架构模式中选择
  3. 03确定 Spring Boot 4 配置与依赖
  4. 04应用随附项目模板
  5. 05查阅架构与功能参考资料

适用场景

  1. 01规划新的 Spring Boot 4 服务
  2. 02为持续发展的应用选择结构
  3. 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.java
base-entity.java
controller.java
docker-compose.yml
exception-handler.java
flyway-migration.sql
http-service-client.java
modularity-test.java
package-info-jspecify.java
pom-additions.xml
repository.java
resilience-service.java
resttestclient-test.java
rich-entity.java
service-cqrs.java
spring-converter.java
testcontainers-test.java
value-object.java
references/
architecture-guide.md
spring-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:评估项目形态

首先收集项目约束:

  1. 领域复杂度:简单 CRUD、中等工作流,或丰富的领域规则。
  2. 团队规模:1-3 人、3-10 人,或 10 人以上。
  3. 预期生命周期:数月、1-2 年,或 5 年以上。
  4. 类型安全需求:基本验证,或大量使用值对象的强类型建模。
  5. 限界上下文:单一领域,或多个功能领域。
  6. 持久化和基础设施需求:数据库选择、迁移工具、本地开发环境设置。
步骤 2:选择架构

默认使用此矩阵作为决策依据。如果选择不明显,请先阅读 references/architecture-guide.md。

模式适用场景复杂度
layeredCRUD 服务、原型、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.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:明确分离应用、领域和基础设施
步骤 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 功能问答

评论

支持 Markdown