项目地址: https://github.com/kbastani/event-stream-processing-microservices
首先看了 spint-boot-starter/spring-boot-starter-data-events 项目下的 Aggregate 基类,没有完全看明白,遂决定先不看基类,从子类开始看。
然后看 account/account-web 项目。一个 domain.Account (聚合根)的行为,本来在聚合根中自己处理就行了,但是先调用 action.SomeAction,再调用 domain.AccountService。这点完全没有看懂,这里的 Action、Module、包括 Service,貌似都是聚合根的辅助类,不明白为什么要加这些,尤其是 AccountService 还容易跟领域服务搞混。
再接下来看到一个行为,我就直接开始怀疑人生了。
- 表现为,accout-web、order-web 两个项目都定义了 demo.order.domain 包和相同的类,但每个类的内部不一样:
- accout-web 项目的类通过 REST 接口获取数据,该项目的 Action 直接调用了 order.domain 包的类。
- order-web 项目的类通过本地获取数据
- 疑问:
- order-web 的 Order 聚合,被直接暴漏给了 account-web 项目
- 虽然名称、字段、行为声明都已经暴漏过去了,但又需要 accout-web 项目自己提供实现
- order-web、account-web 项目定义了包名、类名一样的模型,两套模型之间存在主体和镜像的关系,怎么看怎么别扭,怎么看怎么容易出错。
有没有见过这样代码架构的,解释和推广一下。