(第3天)每日源码调试之旅--实现CQRS模式的AXON框架

8 篇文章 0 订阅

接前一天的调试,调试断点来到AggregateConstructorCommandHandler的handle方法:

首先调用AbstractRepository(提供aggregates存储的抽象,实际值为EventSourcingRepository)的newInstance构造一个Aggregate实例,传入的参数为命令handler的handle lambda表达式。

继续进入到LockingRepository(提供一个锁机制以防止对聚合类并发修改的Repository实现)的doCreateNew方法:

继续跟进到EventSourcingRepository(实现事件回溯机制的Repository,能够自动地发送新事件event到给定的EventBus并代理事件存储到给定的EventStore)的doCreateNewForLock方法:

继续跟进到EventSourcedAggregate(可以从已经被聚合类发布的事件中回溯出来的聚合类实现)的initialize方法:

该方法第一个参数是之前的handle lambda表达式,第二个是用来描述聚合类结构的监视器,第三个是EventBus,第四个是快照触发器。首先用除lambda回调以外的三个参数初始化一个EventSourcedAggregate实例,接着进入到AggregateLifecycle(模拟聚合类生命周期的抽象基类)的registerWithUnitOfWork方法:用当前的UnitOfWork注册该aggregate,最后进入到AnnotatedAggregate(允许聚合根变成一个带注解command和event的handler注解的POJO,此类的初始化在EventSourcedAggregate初始化里被调用过,初始化了EventBus和inspector)的registerRoot(注册聚合根并调用任何延迟的还未应用到聚合类的事件)方法:

继续进入到AggregateLifecycle的executeWithResult(执行给定的task返回执行结果)方法:

debug越跟越深,先暂停,明天继续。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值