mcpField
S
spring-modulith-verifier

spring-modulith-verifier

github.com/sivaprasadreddy测试与质量19457 次安装2 周前更新
代码仓库

关于 spring-modulith-verifier

spring-modulith-verifier 是一项技能,指导开发者按业务模块和限界上下文组织 Spring Boot 应用。它还提供模块内部与 API 的可见性和命名规范。

主要功能

  1. 01按业务模块组织包结构
  2. 02按限界上下文划分模块
  3. 03组件可见性指导
  4. 04Java 类型命名规范

适用场景

  1. 01规划 Spring Boot 包结构
  2. 02检查模块边界与可见性
  3. 03统一领域类型和 API 命名

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sivaprasadreddy/sivalabs-agent-skills --skill spring-modulith-verifier

安装后在 Claude Code 中输入/spring-modulith-verifier确认已加载。

详细介绍

Spring Modulith 验证器技能

采用领域驱动的模块化布局:按业务模块组织包,而非按技术层组织。

推荐的示例包结构
dev.sivalabs.projectname/
├── Application                      # Main Spring Boot entrypoint class
├── shared/                          # Cross-cutting concerns
│   ├── package-info.java
├── users/                           # Users module (bounded context)
│   ├── config/                      # Users module-specific config
│   ├── domain/                      # Domain logic
│   │   ├── models/                  # Domain models
│   │   │   ├── package-info.java
│   │   ├── exceptions/              # Domain custom Exception classes
│   │   │   ├── package-info.java
│   │   ├── {entities, repositories, mappers, services}
│   ├── api/                        # REST API layer
│   │   ├── {controllers, DTOs}      # REST controllers, Request, Response payload DTOs
│   └── UsersAPI.java                # Module's public API (facade)
│
├── catalog/                         # Catalog module
├── orders/                          # Orders module
└── config/                          # Global Configuration
    └── WebMvcConfig.java
    └── SecurityConfig.java
    └── WebSecurityConfig.java
    └── GlobalExceptionHandler.java

上述包结构说明:

  • Application.java:使用 @SpringBootApplication 注解的 Spring Boot 主入口类。包含用于启动应用程序的 main() 方法。

  • shared/:包含多个模块共享的横切关注点和实用工具(例如,通用工具、共享 DTO、基类、自定义注解)。

  • {module}/(例如,users/、catalog/、orders/):每个业务模块代表一个限界上下文,并包含:

    • config/:模块专属的配置类,使用 @Configuration 注解,用于定义仅与此模块相关的 Bean、属性或第三方集成。

    • domain/:包含以下内容的核心业务逻辑层:

      • models/:表示业务概念的领域模型类(命令、查询对象、枚举、值对象、结果对象等,而非 JPA 实体)。这些是封装业务规则的纯 Java 对象。
      • exceptions/:领域专属的自定义异常类。
      • entities:使用 @Entity 注解、映射到数据库表的 JPA 实体类。为避免直接实例化并确保封装性,这些类不应为 public。
      • repositories:继承 JpaRepository 或 CrudRepository、用于数据访问的 Spring Data JPA 仓库接口。这些接口不应为 public。
      • mappers:在实体、领域模型和 DTO 之间转换的映射器类/接口(例如,MapStruct 映射器)。这些类或接口不应为 public。
      • services:使用 @Service 注解的服务类,包含业务逻辑、使用映射器转换 Bean、事务管理以及对仓库调用的编排。
    • api/:REST API 层,包含:

      • controllers:使用 @RestController 注解的 REST 控制器类,负责处理 HTTP 请求、验证输入并委托给服务。
      • DTOs:数据传输对象,包括请求负载(客户端传入的数据)和响应负载(发送给客户端的数据)。
    • {Module}API.java:作为模块公共 API 的门面类,负责委托服务调用,只公开其他模块应访问的内容,同时隐藏内部实现细节。

  • config/:全局应用程序配置类,包括:

    • WebMvcConfig.java:MVC 配置(CORS、拦截器、格式化器)。
    • SecurityConfig.java:用于身份验证和授权的 Spring Security 配置。
    • GlobalExceptionHandler.java:使用 @RestControllerAdvice 集中处理异常,以提供一致的错误响应。
可见性修饰符

默认采用必要的最低可见性。仅公开其他模块或层真正需要的内容。

组件类构造函数方法
控制器package-privatepackage-privatepackage-private
服务publicpackage-privatepublic
仓库package-private(接口)——
实体package-privateprotectedpublic
DTO / recordpublic 或 package-private——
模块 API 门面publicpackage-privatepublic
请求/响应 recordpackage-private——
配置/异常处理器package-private——
Naming Conventions
TypeConventionExample
Entities*EntityUserEntity, AddressEntity
Value ObjectsDomain name (record)Email, UserCode, UserId
Commands*CmdCreateUserCmd, UpdateAddressCmd
Command Response*ResultLoginResult, RegistrationResult
DTOs*DtoUserDto, AddressDto
HTTP Request*RequestCreateUserRequest, CreateAddressRequest
HTTP Response*ResponseCreateUserResponse, CreateAddressResponse
Repositories*RepositoryUserRepository, AddressBookRepository
Services*ServiceUserService, AddressBookService
Domain Exceptions*ExceptionInvalidUserCreationException, UserCancellationException
Module API*APIUsersAPI

评论

支持 Markdown