有些异步处理逻辑,可能需要事务提交之后才能进行处理,这里有一段代码可以处理类似的需要
示例代码
//如果有事务,则事务提交之后在执行
if (TransactionSynchronizationManager.isActualTransactionActive()) {
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
@Override
public void afterCommit() {
try {
// todo 异步任务,如http请求,mq发送等
} catch (Exception e) {
e.printStackTrace();
}
}
});
//没有事务,直接执行
} else {
// todo 异步任务,如http请求,mq发送等
}