【问题标题】:Is it possible to intercept a save or load event in spring-data-elasticsearch?是否可以在 spring-data-elasticsearch 中拦截保存或加载事件?
【发布时间】: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


    【解决方案1】:

    目前 spring-data-elasticsearch 中没有像 spring-data-mongodb 中那样的生命周期钩子。拥有它们肯定会很好。

    我为此打开了issue

    编辑:

    正如 Roman 在他的回答中所写,这已在 4.0 版中实现

    【讨论】:

      【解决方案2】:

      说实话,我不知道 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 库的一部分。

      【讨论】:

      • 谢谢@Mirko,不过@HandleBeforeSave和朋友们不是Spring Data的核心注解,它们是spring-data-rest特有的,所以在spring-data-elasticsearch中是没有的。所以我们还有一个例子来说明如何在其他 spring-data-* 模块中完成它:)
      • @RomanPuchkovskiy 好的,抱歉,我帮不上忙。希望其他人可能知道这个问题的答案。祝你好运
      【解决方案3】:

      EntityCallback 支持是几个月前实施的,请参阅https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#entity-callbacks

      目前,支持保存后、转换后、转换前实体回调,包括反应式和阻塞式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-10
        • 1970-01-01
        • 1970-01-01
        • 2016-03-31
        • 2013-10-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多