Spring Data JDBC参考文档四

原标题:Spring认证|Spring Data JDBC参考文档四 (内容来源:Spring中国教育管理中心)9.9. 生命周期事件Spring Data JDBC 触发发布到ApplicationListener应用程序上下文中任何匹配bean 的事件。例如,在保存聚合之前调用以下侦听器:@Beanpublic ApplicationListener<BeforeSaveEvent<Object>> loggingSaves() {return eve
摘要由CSDN通过智能技术生成

原标题:Spring认证|Spring Data JDBC参考文档四 (内容来源:Spring中国教育管理中心)

Spring Data JDBC参考文档 四

9.9. 生命周期事件

Spring Data JDBC 触发发布到ApplicationListener应用程序上下文中任何匹配bean 的事件。例如,在保存聚合之前调用以下侦听器:

@Bean

public ApplicationListener<BeforeSaveEvent<Object>> loggingSaves() {

return event -> {

Object entity = event.getEntity();

LOG.info("{} is getting saved.", entity);

};

}

如果您只想处理特定域类型的事件,您可以从中派生您的侦听器
AbstractRelationalEventListener并覆盖一个或多个onXXX方法,其中XXX代表事件类型。回调方法只会被与域类型及其子类型相关的事件调用,因此您不需要进一步转换。

public class PersonLoadListener extends AbstractRelationalEventListener<Person> {

@Override

protected void onAfterLoad(AfterLoadEvent<Person> personLoad) {

LOG.info(personLoad.getEntity());

}

}

下表描述了可用的事件:

Spring Data JDBC参考文档 四

生命周期事件依赖于
ApplicationEventMulticaster,在这种情况下SimpleApplicationEventMulticaster可以使用 配置TaskExecutor,因此在处理事件时不提供任何保证。

9.9.1. 商店特定的 EntityCallbacks

Spring Data JDBC 使用EntityCallbackAPI 作为其审计支持并对以下回调做出反应:

Spring Data JDBC参考文档 四

9.10. 实体回调

Spring Data 基础设施提供了在调用某些方法之前和之后修改实体的钩子。那些所谓的EntityCallback实例提供了一种方便的方法来检查和潜在地以回调风格修改实体。

AnEntityCallback看起来很像一个专门的ApplicationListener. 一些 Spring Data 模块发布BeforeSaveEvent允许修改给定实体的存储特定事件(例如)。在某些情况下,例如使用不可变类型时,这些事件可能会导致麻烦。此外,事件发布依赖于
ApplicationEventMulticaster. 如果使用异步配置TaskExecutor它可能会导致不可预测的结果,因为事件处理可以分叉到线程上。

实体回调提供了同步和反应式 API 的集成点,以保证在处理链中定义明确的检查点按顺序执行,返回可能修改的实体或反应式包装器类型。

实体回调通常按 API 类型分隔。这种分离意味着同步 API 仅考虑同步实体回调,而反应式实现仅考虑反应式实体回调。

Spring Data Commons 2.2 引入了实体回调 API。这是应用实体修改的推荐方式。在调用可能已注册的实例之前,ApplicationEvents仍会发布特定于现有商店的信息。EntityCallback

9.10.1. 实现实体回调

AnEntityCallback通过其泛型类型参数直接与其域类型相关联。每个 Spring Data 模块通常带有一组EntityCallback涵盖实体生命周期的预定义接口。

例 60. 解剖 EntityCallback

@FunctionalInterface

public interface BeforeSaveCallback<T> extends EntityCallback<T> {

/**

* Entity callback method invoked before a domain object is saved.

* Can return either the same or a modified instance.

*

* @return the domain object to be persisted.

*/

T onBeforeSave(T entity <2>, String collection <3>);

}

BeforeSaveCallback在保存实体之前要调用的特定方法。返回一个可能被修改的实例。

在持久化之前的实体。

许多存储特定参数,例如实体持久化到的集合。

例 61. 反应式的剖析 EntityCallback

@FunctionalInterface

public interface ReactiveBeforeSaveCallback<T> extends EntityCallback<T> {

/**

* Entity callback method invoked on subscription, before a domain objec

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技能咖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值