Spring Data ElasticSearch 官方文档

Entity Callbacks

Entity Callbacks 为 SpringData 在修改实体前后的钩子函数。可以以回调的方式检查和修改实体。

类似一个 ApplicationListener

一、实现一个 Callbacks

1. 实现EntityCallback

@FunctionalInterface
public interface BeforeSaveCallback<T> extends EntityCallback<T> {
    // 在实体保存之前进行某些操作
    T onBeforeSave(T entity <2>, String collection <3>); 
}

// 实现该方法
class DefaultingEntityCallback implements BeforeSaveCallback<Person>, Ordered {      

    @Override
    public Object onBeforeSave(Person entity, String collection) {                   

        if(collection == "user") {
            return // ...
        }

        return // ...
    }

    @Override
    public int getOrder() {
        return 100;                                                                  
    }
}

2. 注册回调方法

@Order(1)                                                           
@Component
class First implements BeforeSaveCallback<Person> {

    @Override
    public Person onBeforeSave(Person person) {
        return // ...
    }
}

@Component
class DefaultingEntityCallback implements BeforeSaveCallback<Person>,
                                                           Ordered { 

    @Override
    public Object onBeforeSave(Person entity, String collection) {
        // ...
    }

    @Override
    public int getOrder() {
        return 100;                                                  
    }
}

@Configuration
public class EntityCallbackConfiguration {

    @Bean
    BeforeSaveCallback<Person> unorderedLambdaReceiverCallback() {   
        return (BeforeSaveCallback<Person>) it -> // ...
    }
}

@Component
class UserCallbacks implements BeforeConvertCallback<User>,
                                        BeforeSaveCallback<User> {   

    @Override
    public Person onBeforeConvert(User user) {
        return // ...
    }

    @Override
    public Person onBeforeSave(User user) {
        return // ...
    }
}

二、ES 支持的回调

回调 方法 描述
BeforeConvertCallback onBeforeConvert(T, IndexCoordinates) 将对象转换为Document之前调用
AfterConvertCallback onAfterConvert(T, Document, IndexCoordinates) 从ES中取出对象,并转换为实体后调用
AuditingEntityCallback onBeforeConvert(Object, IndexCoordinates) 被标记为Auditing的实体被创建或修改时调用
AfterSaveCallback T onAfterSave(T, IndexCoordinates) 保存对象后调用
文章作者: koral
文章链接: http://luokaiii.github.io/2020/08/18/后端/SpringDataElasticsearch/7.EntityCallbacks/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自