为了账号安全,请及时绑定邮箱和手机立即绑定

从 beforeCompletion TransactionSynchroni 回滚事务?

从 beforeCompletion TransactionSynchroni 回滚事务?

精慕HU 2023-08-04 14:47:07
我正在使用 SpringTransactionSynchronizationManager注册回调,beforeCompletion如下所示:@Transactionalpublic void doTransaction() {    //do DB stuff    updateDB();    //register a synchronization    TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {        @Override        public void beforeCompletion() {            if(!isCallApiSuccessful()) {                //rollback the transaction            }        }    });}问题是如何从回调中回滚事务beforeCompletion?抛出异常会起作用吗?
查看完整描述

1 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

抛出异常会起作用吗?

不,它不会起作用,因为beforeCompletion()它是为了清理资源。
根据文档,抛出异常的效果如下:

投掷:

java.lang.RuntimeException- 如果出现错误;将被记录但不会传播(注意:不要在这里抛出 TransactionException 子类!)

如果您想阻止提交,您可能应该实现void beforeCommit(boolean readOnly)这一点并在其中抛出一个。 根据文档,抛出异常的效果如下: RuntimeException

投掷:

java.lang.RuntimeException- 如果出现错误;将传播到调用者(注意:不要在这里抛出 TransactionException 子类!)


查看完整回答
反对 回复 2023-08-04
  • 1 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信