@Transactional+@Async期望异步方法在事务提交后执行

@Transactional 内部调用 @Async方法,期望异步方法再事务提交后执行,可以使用TransactionSynchronizationManager类实现

class A {
 
    @Autowired
    private B b;
    
    @Transactional
    public void updateA(..) {
        batchInsert(..);
        update(..);
        TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
            @Override
            public void afterCommit() {
                b.updateB(..);
            }
        });
    }

}
    
class B {
 
    @Async
    public void updateB(..) {
        update(..)
    }
 
}

你可能感兴趣的:(@Transactional+@Async期望异步方法在事务提交后执行)