50 CQRS 进阶(上):CQRS 的代码架构设计(命令端 + 查询端)
你好,欢迎来到第 50 讲。
在入门篇中,我们已经理解了 CQRS 的核心思想——读写分离,以及它的三大适用场景。我们知道,在逻辑上,CQRS 将系统划分为“命令处理端”和“查询处理端”。
现在,是时候将这个逻辑架构,映射到我们真实的代码中了。一个支持 CQRS 的应用,其代码结构应该是什么样的?命令、查询、处理器、模型、DTO,这些概念在代码中,应该如何被组织和实现?
本讲,我们将进入 CQRS 的进阶上半场,聚焦于CQRS 的代码架构设计。我将为你展示一个典型的、基于 Java 和 Spring Boot 的 CQRS 代码框架,并详细拆解命令端和查询端各自的实现细节。这会为你提供一个可以直接在项目中借鉴和应用的“脚手架”。
一、CQRS 的整体代码架构
一个典型的 CQRS 应用,其代码目录结构,会非常清晰地反映出“读写分离”的思想。
项目模块/包结构示例:
com.mycompany.trading // 限界上下文根包 ├── command // 1. 命令端 (Write Side) │ ├── api // 命令对象(Command)的定义 │ │ └── PlaceOrderCommand.java │ ├── model // 领域模型 (聚合