transactionSafeRun
This commit is contained in:
@@ -2,9 +2,12 @@ package com.czg.utils;
|
|||||||
|
|
||||||
import cn.hutool.core.lang.func.Func0;
|
import cn.hutool.core.lang.func.Func0;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
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
|
@Slf4j
|
||||||
public class FunUtils {
|
public class FunUtils {
|
||||||
/**
|
/**
|
||||||
@@ -38,4 +41,27 @@ public class FunUtils {
|
|||||||
log.error(errorMsg, args, e);
|
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