由存储库管理的实体是聚合根。在域驱动设计应用程序中,这些聚合根通常会发布域事件。Spring Data提供了一个注释,@DomainEvents
您可以在聚合根的方法上使用该注释,以使该发布尽可能简单。
从聚合根公开事件域事件:
class AnAggregateRoot {
@DomainEvents
Collection<Object> domainEvents() {
// … return events you want to get published here
}
@AfterDomainEventsPublication
void callbackMethod() {
// … potentially clean up domain events list
}
}
- 使用的方法
@DomainEvents
可以返回单个事件实例或事件集合。它不能采取任何论点。 - 发布所有事件后,使用注释的方法
@AfterDomainEventsPublication
。它可以用于潜在地清理要发布的事件列表。
每次调用Spring Data存储库的save(…)
方法时,都会调用这些方法。