如何在 Spring data r2dbc 中替换 @PrePersist

fyr*_*kov 4 java spring-data project-reactor spring-webflux spring-data-r2dbc

我在 Spring Webflux 应用程序中使用spring-boot-starter-data-r2dbc(版本 1.1.3)模块。
我想将实体生命周期回调添加到我的持久层。
使用 Spring Data JPA 可以使用@PrePersist@PreUpdate等注释。
有没有方便的方法可以使用 Spring Data r2dbc 实现此目的?

fyr*_*kov 5

从新的Spring Data 2020.0 版本spring-data-r2dbc:1.2.0的一部分开始,可以使用新的“生命周期实体回调 API”。

这是一个简短的例子:

import org.springframework.data.r2dbc.mapping.event.BeforeSaveCallback;


@Component
public class DefaultingEntityCallback implements BeforeSaveCallback<MyEntity> {

    @Override
    public Publisher<MyEntity> onBeforeSave(final MyEntity entity,
                                            final OutboundRow row,
                                            final SqlIdentifier table) {
        // do something
        return Mono.just(entity);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是一些文档: https://docs.spring.io/spring-data/r2dbc/docs/current/reference/html/#r2dbc.entity-callbacks