添加Controller时SpringDataRest @RepositoryEventHandler未运行

时间:2015-12-10 20:14:57

标签: spring-data-rest

我有一个在存储库上运行完美的事件处理程序。但是,一旦我将控制器添加到混合中并直接调用存储库方法,似乎跳过了EventHandler。

有没有人遇到过这个"问题"?如果是这样,我该怎么做才能让事件处理程序再次开始运行?

1 个答案:

答案 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