Java:事务提交之后再做其他操作

本文详细解释了如何使用TransactionSynchronizationManager在Spring中实现事务提交后的异步任务doSth()执行,并介绍了各个回调方法的作用。特别关注afterCommit方法的时机和suspend/resume等行为。

不管TransactionSynchronizationManager.registerSynchronization(事物同步注册器)放在代码逻辑的任何地方,都会在事物提交之后,重新创建一个子线程来执行doSth()的逻辑。但是会直到doSth()执行完后才会返回响应。

TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
    @Override
    public void afterCommit() {
        //doSth方法只在当前事物已经提交后再执行
        doSth();
    }
});

suspend
resume:开启新事务失败时会调用
flush:没调用
beforeCommit:事务提交前会调用
beforeCompletion:事务提交前会调用,在beforeCommit之后
afterCommit:事务提交后会调用
afterCompletion:事务提交后会调用,在afterCommit之后

suspend:在spring开启新事务,获取connection之前会调用(未执行registCustomer)
resume:开启新事务失败时会调用(未执行registCustomer)
flush:没调用
beforeCommit:事务提交前会调用(已执行registCustomer)
beforeCompletion</font:事务提交前会调用,在beforeCommit之后(已执行registCustomer)
afterCommit:事务提交后会调用(已执行registCustomer)
afterCompletion:事务提交后会调用,在afterCommit之后(已执行registCustomer)
registCustomer是啥后面再补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值