1. Spring 提供了事务同步管理器让我们能监听Spring的事务操作,这个可以获取到当前是否存在事务。
TransactionSynchronizationManager.isSynchronizationActive()
2. 这是注册一个监听器,需要传入一个对象TransactionSynchronization
TransactionSynchronizationManager.registerSynchronization()
他有两个方法,一个是事务提交后执行,一个是事务完成后执行(不会区分他是提交还是回滚操作)
@Override
public void afterCommit() {
// 事务后提交
}
public void afterCompletion(int status) {
// 事务完成后执行(不会区分他是提交还是回滚操作)
}
3. 举个例子如下:
//当前事务提交后方可进行异步任务,防止异步任务先于未提交的事务执行
private void callBack(Invoice invoice){
boolean synchronizationActive = TransactionSynchronizationManager.isSynchronizationActive();
if (synchronizationActive) { // 当前存在事务,在事务提交后执行
TransactionSynchronizationManager.registerSynchronization(
new TransactionSynchronizationAdapter() {
@Override
public void afterCommit() { // 监听事务提交完成
doCall(invoice);
}
}
);
} else {
// 当前不存在事务,直接执行
doCall(invoice);
}
}
本文介绍了如何使用Spring的TransactionSynchronizationManager来监听和管理事务。通过TransactionSynchronizationManager.isSynchronizationActive()检查当前事务状态,并注册TransactionSynchronization监听器,实现事务提交后的回调操作。示例中展示了如何在事务提交后执行异步任务,确保任务在事务完成后才运行。
5032

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



