He encontrado la anotación @DomainEvents y @AfterDomainEventsPublication en la documentación de referencia de Spring Data JPA. Pero no puedo encontrar el ejemplo perfecto para explicar sobre estas anotaciones.
Puede ver una muestra en las pruebas unitarias originales para EventPublishingRepositoryProxyPostProcessor EventPublishingRepositoryProxyPostProcessorUnitTests.java de Oliver Gierke en el repositorio GitHub de Spring Data Commons .
Descripción en la edición base de Spring Jira DATACMNS-928 La compatibilidad con la exposición de eventos de dominio desde raíces agregadas como eventos de la aplicación Spring fue útil para mí.
ACTUALIZAR
Este es un ejemplo simple y realmente funcional de Zoltan Altfatter: Publicación de eventos de dominio desde raíces agregadas
Aquí está mi código de ejemplo:
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"); } }Esta es una clase de entidad administrada por un repositorio de datos de Spring. Tanto @DomainEvents como @AfterDomainEventPublication ocurren después de ejecutar CrudRepository.save(). Una cosa interesante es que @AfterDomainEventPublication SOLO funciona cuando existe @DomainEvents.
También estoy aprendiendo la referencia de Spring Data, tanto esta pregunta como la respuesta de Dmitry Stolbov me ayudaron mucho.