用途:在设计与维护 Java 服务时应用六边形架构(端口与适配器)或整洁架构,实现领域与基础设施的清晰隔离。
核心规则:领域层不依赖任何外部框架(无 Spring、JPA、HTTP 导入);应用层定义端口(接口)并编排领域逻辑;基础设施层实现端口(JPA、REST、Kafka 等)。依赖方向始终向内:基础设施 → 应用 → 领域。
主要能力与模式:
- 纯领域:实体与值对象不含框架注解,业务方法内聚校验(如订单确认、金额合计)。
- 应用层定义端口:输入端口(用例接口,如 CreateOrderUseCase)与输出端口(如 OrderRepository、NotificationPort);应用服务实现用例,可含 Spring 注解与事务。
- 基础设施实现端口:持久化适配器实现仓储端口,REST 控制器作为输入适配器,通知适配器实现通知端口。
包结构建议:domain/model、domain/service;application/port/in、application/port/out、application/service、application/dto;infrastructure/persistence、web、notification。值对象使用不可变 record 并做校验。
反模式:领域层使用 JPA 注解或基础设施类型;应用层直接依赖 Spring Data 仓储;一个适配器实现多个端口。
规则要点:领域实体与用例对框架类零依赖;端口接口定义在领域/应用侧,适配器在基础设施侧;应用服务只编排领域逻辑,不含持久化或 HTTP 关注点;每个适配器只实现一个端口;用例测试使用桩或假实现替代真实适配器。
限制:资料未提供安装命令、版本要求、收费信息或具体平台支持范围。