不管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是啥后面再补充

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

8264

被折叠的 条评论
为什么被折叠?



