sat*_*n a 7 spring spring-data-jpa
我在spring Data JPA Reference Documentation中遇到了@DomainEvents和@AfterDomainEventsPublication批注.但我无法找到解释这些注释的完美例子
您可以在Spring Data Commons的 GitHub存储库中EventPublishingRepositoryProxyPostProcessor 看到 Oliver Gierke的EventPublishingRepositoryProxyPostProcessorUnitTests.java的原始单元测试中的 示例.
Spring Jira DATACMNS-928基本问题中的描述支持从聚合根公开域事件,因为Spring应用程序事件对我很有用.
UPDATE
这是Zoltan Altfatter的简单而真实的例子: 从聚合根发布域事件
这是我的示例代码:
package com.peaceelite.humanService;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import org.springframework.data.domain.AfterDomainEventPublication;
import org.springframework.data.domain.DomainEvents;
import java.util.*;
@Entity
public class SalesmanCustomerRelationship{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String firstName;
private String lastName;
/*getters & setters*/
@DomainEvents
Collection<Object> domainEvents() {
List<Object> result = new ArrayList<Object>();
result.add("Here should be an Event not a String, but, anyway");
return result;
}
@AfterDomainEventPublication
void callbackMethod() {
System.out.println("DATA SAVED!\n"+"WELL DONE");
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个由spring数据存储库管理的实体类.在执行CrudRepository.save()之后,@ DomainEvents和@AfterDomainEventPublication都会发生.有趣的是@AfterDomainEventPublication仅在@DomainEvents存在时起作用.
我也在学习Spring Data参考,这个问题和Dmitry Stolbov的回答对我帮助很大.