package com.ydfind.util.service;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.function.Supplier;
@Component
public class TransactionService {
@Transactional(rollbackFor = Exception.class)
public <T> T doTransaction(Supplier<T> supplier){
return supplier.get();
}
@Transactional(rollbackFor = Exception.class)
public void doTransaction(Runnable task) {
task.run();
}
}
@Component
public class TransactionUtil {
private static TransactionService transactionService;
private TransactionUtil(TransactionService transactionService) {
TransactionUtil.transactionService = transactionService;
}
public static <T> T transaction(Supplier<T> supplier) {
return transactionService.doTransaction(supplier);
}
public static void transaction(Runnable task) {
transactionService.doTransaction(task);
}
}
实际使用时TransactionUtil.transaction(() -> {…});