如何在 Spring 数据 r2dbc 中替换 @PrePersist

How can I substitute @PrePersist in Spring data r2dbc

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

来自docs

Spring Data R2DBC aims at being conceptually easy. In order to achieve this it does NOT offer caching, lazy loading, write behind or many other features of ORM frameworks. This makes Spring Data R2DBC a simple, limited, opinionated object mapper.

因此您必须自己编写此类机制或编写不依赖于它们的持久性代码。

从属于新 Spring Data 2020.0 releasespring-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);
    }
}

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