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) |
保存对象后调用 |