事务方法内先提交事务,再进行其他操作
Posted ZK_小姜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了事务方法内先提交事务,再进行其他操作相关的知识,希望对你有一定的参考价值。
问题描述:有时候会有这种场景,一个事务方法中,有两步操作,操作一为插入数据库操作,操作二把操作一插入数据的id发给其他系统,其他系统拿到id后来查询数据,但是会发现有时候系统运行比较快的时候,查询数据会查不到。
原因:因为两步操作都是在一个事务方法中的,操作二虽然拿到了操作一插入数据的id,然后发给了其他系统,但是这个时候,其实还不能保证事务已经提交了,所以其他的系统通过id来查询数据,会发现有时候查不到。
解决办法:
方法一: 把操作二从事务方法中分离出来,然后放到事务方法后面去执行;
方法二:在事务方法中加入如下代码:
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter()
@Override
public void afterCommit()
//操作二
);
以上是关于事务方法内先提交事务,再进行其他操作的主要内容,如果未能解决你的问题,请参考以下文章