使用场景:
1 用户注册后异步发送邮件等
2 事务方法a异步调用方法b, 由于方法b在执行的时候,方法a事务没有提交,导致方法b执行过程中无法获取到方法a尚未提交的数据,从而产生异常
解决方式:
1.使用事务管理器
import org.springframework.transaction.support.TransactionSynchronizationAdapter;
import org.springframework.transaction.support.TransactionSynchronizationManager;
@Override
@Transactional(rollbackFor = Exception.class)
public void register(User user) {
//注册用户
userService.register(user);
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
@Override
public void afterCommit() {
//事务提交后执行
ryRegisterProduction.send(user)