【发布时间】:2019-06-03 11:31:38
【问题描述】:
在spring-data-jpa中,我们可以使用JPA的注解如@PrePersist和朋友来拦截保存/加载事件。
在spring-data-mongodb 中,出于同样的目的,我们可以使用lifecycle events。
spring-data-elasticsearch有类似的吗?
【问题讨论】:
标签: java spring-data spring-data-elasticsearch
在spring-data-jpa中,我们可以使用JPA的注解如@PrePersist和朋友来拦截保存/加载事件。
在spring-data-mongodb 中,出于同样的目的,我们可以使用lifecycle events。
spring-data-elasticsearch有类似的吗?
【问题讨论】:
标签: java spring-data spring-data-elasticsearch
目前 spring-data-elasticsearch 中没有像 spring-data-mongodb 中那样的生命周期钩子。拥有它们肯定会很好。
我为此打开了issue。
编辑:
正如 Roman 在他的回答中所写,这已在 4.0 版中实现
【讨论】:
说实话,我不知道 elasticsearch,但由于它是 Spring Data,我建议你使用这样的 EventHandler:
@Component
@RepositoryEventHandler(YourDomainClass.class)
public class YourDomainClassEventHandler {
@HandleBeforeCreate
public void handleYourDomainClassCreate(YourDomainClass yourDomainClass) {
//do some action
}
}
还有@HandleBeforeSave、@HandleAfterSave 等注释。它是 spring-data-rest-core 库的一部分。
【讨论】:
@HandleBeforeSave和朋友们不是Spring Data的核心注解,它们是spring-data-rest特有的,所以在spring-data-elasticsearch中是没有的。所以我们还有一个例子来说明如何在其他 spring-data-* 模块中完成它:)
EntityCallback 支持是几个月前实施的,请参阅https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#entity-callbacks
目前,支持保存后、转换后、转换前实体回调,包括反应式和阻塞式。
【讨论】: