应用场景
应用场景:有些业务场景需要在事务提交成功之后在执行的业务逻辑。
比如:数据库缓存一致性,可以在数据库更新成功后在删除缓存,发送mq等等
工具类TransactionalUtil
在事务提交之后执行指定的回调操作。
使用了Spring框架中的事务同步管理器来实现
package com.dehua.common.util;
import lombok.extern.slf4j.Slf4j;
import org.springframework.transaction.support.TransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationManager;
@Slf4j
public class TransactionalUtil {
private TransactionalUtil() {
}
/**
* 在事务提交之后执行
* @param runnable
*/
public static void transactionalAfterCompletion(Runnable runnable) {
// 注册事务完成后的回调方法
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override
public void afterCommit() {
try {
// 在事务成功提交后执行回调方法
runnable.run();
} catch (Exception e) {
// 异常处理
log.error("e:", e);
}
}
});
}
}