Administrator
Administrator
发布于 2025-08-06 / 19 阅读
0
0

DDD分层架构图解析

1. api (可选 - API定义层)

  • 层级定位: 系统的最顶层,定义了对外的接口契约。

  • 核心职责: 封装对外暴露的服务接口和数据传输对象(DTO)。如果这个系统需要被其他微服务调用,这个模块可以被打包成一个轻量级的client.jar包提供给调用方。

  • 图中各部分内容:

    • dto: 数据传输对象(Data Transfer Object),用于跨服务或跨层的数据交换。

    • response: 统一的API响应体结构。

2. app (应用启动层)

  • 层级定位: 整个应用程序的入口和配置中心

  • 核心职责: 负责组装和启动整个Spring Boot应用。它像一个“总开关”,将所有模块整合在一起。

  • 图中各部分内容:

    • 启动类: 包含main方法的Spring Boot启动类(例如 Application.java),上面有@SpringBootApplication注解。

    • config: 存放全局的核心配置。例如,数据库连接池的配置、MyBatis的扫描配置、事务管理、全局缓存策略、线程池配置等。这些是整个应用都需要的基础设施配置。

    • 配置文件: src/main/resources下的application.yml等环境配置文件。

    • 单元测试: 单元测试的代码都在这个模块的test目录下面

3. trigger (触发层)

  • 层级定位: 外部交互的直接入口,负责“触发”业务流程。

  • 核心职责: 接收来自外部的请求,并将其转换为对领域层(domain)或应用层服务的调用。这一层现在变得更薄,更专注于协议的转换。

  • 图中各部分内容:

    • http: RESTful API 控制器。负责处理HTTP请求。

    • job: 定时任务。处理需要定时执行的业务。

    • listener: 消息监听器。作为消息队列的消费者。

4. domain (领域层)

  • 层级定位: 架构的绝对核心,包含了所有业务逻辑和规则。

  • 核心职责: 纯粹地表达业务模型,不依赖任何技术实现。

  • 图中各部分内容:

    • model: 领域模型,包括entity (实体), Value Object (值对象), Aggregate (聚合)。

    • service: 领域服务,处理跨多个聚合的复杂业务逻辑。

    • adapter: 端口 (Ports),定义了领域层与外部世界交互的接口,如repository接口和与其他系统交互的port接口。

    • event: 领域事件,用于记录领域中已发生的重要事实,实现解耦。

5. infrastructure (基础设施层)

  • 层级定位: 系统的技术实现层。

  • 核心职责: 为领域层定义的“端口”(接口)提供具体的技术实现。

  • 图中各部分内容:

    • gateway: 网关实现,负责与外部第三方API通信。

    • adapter: 适配器 (Adapters),实现domain层定义的portrepository接口。

    • dao: 数据访问对象,直接与数据库交互的MyBatis Mapper接口。

    • redis: 封装所有与Redis缓存交互的具体实现代码。

6. types (通用类型层)

  • 层级定位: 最基础的模块,被所有其他模块依赖。

  • 核心职责: 提供全局通用的、与业务无关的基础数据结构和定义。

  • 图中各部分内容:

    • common: 通用常量、工具类。

    • enums: 全局共享的枚举定义。

    • event: 领域事件的基础结构或消息体定义。

    • exception: 自定义全局异常类。

    • sdk: 与第三方SDK交互时用到的通用数据对象。


评论