Spring Data # EventPublishingRepositoryProxyPostProcessor

来源:互联网 发布:淘宝美工助手破解 编辑:程序博客网 时间:2024/06/07 03:12

EventPublishingRepositoryProxyPostProcessor是RepositoryProxyPostProcessor的一个实现类,可以可以快速实现DDD中聚合根发送领域事件的功能;

AbstractAggregateRoot、AfterDomainEventPublication、DomainEvents

一个领域模型中需要实现两个方法,一个是获取事件的方法(可以是单个事件,也可以是事件数组),还有一个发送完事件之后的回调方法;

DomainEvents用来标识在获取事件的方法,AfterDomainEventPublication用来标识回调方法;

AbstractAggregateRoot为我们提供了一个典型的实现,我们可以直接继承AbstractAggregateRoot实现我们自己的聚合根类定义;

注意点

从EventPublishingMethodInterceptor中可以看出,只有save开头的方法才会被拦截;

public Object invoke(@SuppressWarnings("null") MethodInvocation invocation) throws Throwable {    Object[] arguments = invocation.getArguments();    Object result = invocation.proceed();    if (!invocation.getMethod().getName().startsWith("save")) {        return result;    }    Object eventSource = arguments.length == 1 ? arguments[0] : result;    eventMethod.publishEventsFrom(eventSource, publisher);    return result;}