transactionSafeRun
This commit is contained in:
@@ -2,9 +2,12 @@ package com.czg.utils;
|
||||
|
||||
import cn.hutool.core.lang.func.Func0;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.transaction.support.TransactionSynchronization;
|
||||
import org.springframework.transaction.support.TransactionSynchronizationManager;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
/**
|
||||
* @author zs
|
||||
*/
|
||||
@Slf4j
|
||||
public class FunUtils {
|
||||
/**
|
||||
@@ -38,4 +41,27 @@ public class FunUtils {
|
||||
log.error(errorMsg, args, e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 在事务提交后执行方法
|
||||
* 异步 执行
|
||||
*
|
||||
* @param func 方法
|
||||
*/
|
||||
public static void transactionSafeRun(Runnable func) {
|
||||
try {
|
||||
if (TransactionSynchronizationManager.isSynchronizationActive()) {
|
||||
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
|
||||
@Override
|
||||
public void afterCommit() {
|
||||
safeRunVoid(func, "");
|
||||
}
|
||||
});
|
||||
} else {
|
||||
safeRunVoid(func, "");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("方法执行失败: {}", e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user