這是一本能教你快速從零構建一個完整的企業級DDD應用的實戰性著作。
DDD本身涉及的概念多,而且技術組件的實現也比較復雜,對于初學者來說門檻相對較高。本書在寫作上另辟蹊徑,首先用很短的篇幅將限界上下文、聚合、實體等十幾組核心概念和技術組件,以及Spring Boot、Spring Cloud和Axon等開發DDD應用的主流開源框架做了一個簡單的介紹,然后用8章的篇幅講解了一個綜合性的案例,不僅將前面提到的這些核心概念、技術組件和開發框架的原理、使用全部融入到了案例中,還一步步地詳細講解了DDD應用的實現方式和落地細節。
通過閱讀本書,你能獲得以下收獲:
架構設計:基于DDD核心概念設計業務體系架構。
技術體系:根據DDD技術實現模型掌握主流框架的應用。
案例實戰:遞進式演練DDD核心理念及技術的落地實現。
工程實施:提升DDD工程的整體實施水平和能力。
前 言
第1章 引入DDD 1
1.1 面向領域的設計思想 1
1.1.1 業務模型和系統復雜度 2
1.1.2 領域驅動設計的維度 4
1.2 面向領域的設計方法 4
1.2.1 面向領域的戰略設計 5
1.2.2 面向領域的戰術設計 7
1.3 應用DDD 12
1.3.1 DDD與單體架構 12
1.3.2 DDD與微服務架構 13
1.3.3 DDD與中臺架構 14
1.4 本章小結 15
第2章 DDD核心概念 16
2.1 子域和限界上下文 16
2.1.1 子域的類型 17
2.1.2 限界上下文的映射和集成 17
2.2 領域模型對象 20
2.2.1 實體和值對象 20
2.2.2 聚合 25
2.3 領域服務 28
2.4 領域事件 29
2.5 資源庫 31
2.5.1 資源庫模式 31
2.5.2 資源庫的設計策略 32
2.6 應用服務 33
2.6.1 應用服務的定位 33
2.6.2 應用服務的分類 34
2.7 基礎設施 34
2.8 本章小結 35
第3章 DDD案例分析 37
3.1 HealthMonitor業務體系 37
3.1.1 案例描述和通用語言 37
3.1.2 案例建模流程 39
3.2 子域和限界上下文 40
3.2.1 HealthMonitor子域 40
3.2.2 HealthMonitor限界上下文 42
3.3 領域模型對象 44
3.3.1 HealthMonitor聚合 44
3.3.2 HealthMonitor實體 45
3.3.3 HealthMonitor值對象 46
3.4 領域事件和事務 47
3.4.1 HealthMonitor領域事件 48
3.4.2 HealthMonitor事務 50
3.5 應用服務 50
3.5.1 HealthMonitor命令服務 51
3.5.2 HealthMonitor查詢服務 53
3.6 限界上下文集成 54
3.7 本章小結 55
第4章 DDD實現技術 56
4.1 DDD技術實現模型 57
4.1.1 單體模型 57
4.1.2 系統集成模型 58
4.1.3 微服務模型 59
4.1.4 消息通信模型 60
4.2 Spring Boot與DDD實現模型 61
4.2.1 Spring Boot 62
4.2.2 Spring Data 64
4.3 Spring Cloud與DDD實現模型 65
4.3.1 Spring Cloud基礎組件 65
4.3.2 Spring Cloud Stream 67
4.4 Axon與DDD實現模型 68
4.4.1 CQRS和事件溯源 68
4.4.2 Axon框架 70
4.5 本章小結 71
第5章 案例實現:限界上下文 72
5.1 Spring Boot應用程序 72
5.1.1 傳統Spring Boot應用程序 73
5.1.2 基于DDD的Spring Boot
應用程序 76
5.2 創建第一個限界上下文 78
5.2.1 代碼包結構 78
5.2.2 領域對象 79
5.2.3 應用服務 80
5.2.4 基礎設施 81
5.2.5 接口 81
5.2.6 集成 82
5.3 實現HealthMonitor限界上下文 84
5.3.1 代碼工程 84
5.3.2 限界上下文映射 85
5.4 本章小結 86
第6章 案例實現:領域模型對象 87
6.1 創建聚合 88
6.2 抽取實體和值對象 89
6.2.1 抽取實體 89
6.2.2 抽取值對象 92
6.3 為聚合添加領域邏輯 94
6.3.1 實現申請健康監控領域邏輯 95
6.3.2 實現創建健康計劃領域邏輯 97
6.3.3 實現執行健康任務領域邏輯 97
6.4 實現HealthMonitor領域模型對象 99
6.4.1 HealthPlan聚合 99
6.4.2 HealthTask聚合 99
6.4.3 HealthRecord聚合 100
6.4.4 共享領域對象 100
6.5 本章小結 101
第7章 案例實現:應用服務 102
7.1 應用服務實現策略 102
7.2 實現應用服務 105
7.2.1 實現命令服務 105
7.2.2 實現查詢服務 108
7.3 整合應用服務和聚合 110
7.4 實現HealthMonitor應用服務 111
7.5 本章小結 113
第8章 案例實現:資源庫 114
8.1 資源庫實現策略 114
8.2 Spring Data JPA 116
8.2.1 Spring Data抽象 116
8.2.2 JPA規范 117
8.2.3 多樣化查詢 118
8.3 實現資源庫 122
8.3.1 創建PO和工廠 122
8.3.2 創建Mapper 124
8.3.3 實現Repository 126
8.4 整合資源庫和應用服務 128
8.5 實現HealthMonitor資源庫 129
8.6 本章小結 131
第9章 案例實現:領域事件 132
9.1 領域事件實現策略 132
9.2 基于Spring Data生成領域事件 134
9.2.1 @DomainEvents注解和
AbstractAggregateRoot 135
9.2.2 @TransactionalEventListener
注解 136
9.3 基于Spring Cloud Stream發布和
訂閱領域事件 137
9.3.1 Spring Cloud Stream整體
架構 137
9.3.2 實現Spring Cloud Stream
Source 142
9.3.3 實現Spring Cloud Stream
Sink 146
9.4 實現HealthMonitor領域事件 152
9.5 本章小結 152
第10章 案例實現:限界上下文集成 153
10.1 限界上下文集成策略 153
10.1.1 統一協議和防腐層 154
10.1.2 服務注冊和發現 155
10.2 基于REST API構建統一協議 156
10.2.1 創建Controller 156
10.2.2 處理Web請求 157
10.2.3 集成應用服務 158
10.3 基于REST API構建防腐層 162
10.3.1 創建和使用RestTemplate 162
10.3.2 創建防腐層組件 165
10.3.3 集成命令服務 166
10.4 本章小結 168
第11章 案例實現:事件溯源和CQRS 169
11.1 事件溯源和CQRS的實現策略 169
11.1.1 事件溯源模式的設計理念 170
11.1.2 整合事件溯源和CQRS 171
11.2 Axon框架 172
11.2.1 Axon框架的整體架構 173
11.2.2 Axon服務器 175
11.3 Axon框架的領域模型組件 176
11.3.1 Aggregate 176
11.3.2 CommandHandler 176
11.3.3 QueryHandler 177
11.3.4 EventHandler 178
11.3.5 EventSourceHandler 179
11.4 Axon框架的分派模型組件 180
11.4.1 CommandBus 181
11.4.2 QueryBus 183
11.4.3 EventBus 184
11.5 基于Axon框架實現HealthMonitor案例系統 185
11.5.1 基于Axon框架的重構
策略 185
11.5.2 重構領域模型對象 187
11.5.3 重構應用服務 191
11.5.4 重構領域事件 194
11.6 本章小結 195
第12章 案例實現:測試 196
12.1 DDD測試內容和類型 197
12.1.1 DDD應用程序的測試
內容 197
12.1.2 DDD應用程序的測試
類型 198
12.2 Spring Boot中的測試解決方案 200
12.2.1 測試工具組件 200
12.2.2 測試流程 201
12.2.3 測試注解 205
12.3 測試HealthMonitor案例系統 210
12.3.1 測試領域對象 210
12.3.2 測試應用服務 213
12.3.3 測試資源庫 216
12.3.4 測試接口 219
12.4 本章小結 220
第13章 DDD實踐方法 221
13.1 DDD架構風格 221
13.1.1 應用經典分層架構管理
組件依賴關系 222
13.1.2 應用整潔架構有效實現
應用程序分層 224
13.1.3 應用六邊形架構分離系統
關注點 225
13.1.4 應用事件驅動和管道-
過濾器混合架構實現系統
解耦 228
13.2 DDD實施方式 230
13.2.1 DDD實施的前提和模式 230
13.2.2 基于DDD構建應用程序
的方法 232
13.3 整合DDD與微服務 233
13.3.1 微服務拆分模式 233
13.3.2 微服務數據管理模式 236
13.3.3 微服務與HealthMonitor
案例系統 241
13.4 本章小結 250