我有一个在存储库上运行完美的事件处理程序。但是,一旦我将控制器添加到混合中并直接调用存储库方法,似乎跳过了EventHandler。
有没有人遇到过这个"问题"?如果是这样,我该怎么做才能让事件处理程序再次开始运行?
答案 0 :(得分:6)
因此,您希望在使用自定义控制器时调用事件处理程序。我认为这种期望是错误的。当弹簧数据休止符RepositoryEntityController
处于控制状态时,就会调用事件处理程序。它不是JPA级别的实体事件侦听器。
您可以做的是手动调用事件处理程序。 spring-data-rest RepositoryEventHandler
是一个使用普通的spring应用程序事件。因此,您的控制器可以实现ApplicationEventPublisherAware
并发布一个spring-data-rest应用程序事件。这些都是org.springframework.data.rest.core.event.RepositoryEvent
applicationEventPublisher.publishEvent(new AfterCreateEvent(myEntity));
有关详细信息,请参阅spring documentation。