image.png
如图,假设需要在方法中判断事务是否已经提交了,那么要怎么做呢?

真实背景

如果看不懂描述可以跳过

之前有个功能就是这样的,比如数据库有一条id为1的数据,需要在这个方法进行修改,修改完以后需要发送到MQ中进行处理,然后MQ消费者在监听这条数据的状态,但是有可能消费者拿到的时候数据状态还没改,那么此时进行处理就会有问题,如何解决这个问题呢?

TransactionSynchronizationManager

事务管理器,spring用于存储当前线程执行事务的一个管理器,里面封装了连接,是否只读等消息,重要的是里面会提供了一个监听机制,也就是

TransactionSynchronization

可以监听到当前事务提交,回滚等
TransactionSynchronizationManager.registerSynchronization
所以上面的问题就可以利用这个机制进行解决

image.png

主要是红框中的内容,用于判断,前面是为了验证所用的

image.png

结果是对的,利用了回调机制进行处理的