Spring-@Transactional with ScheduledExecutorService-后台会发生什么?

Spring-@Transactional with ScheduledExecutorService-后台会发生什么?,spring,spring-transactions,transactional,scheduledexecutorservice,Spring,Spring Transactions,Transactional,Scheduledexecutorservice,我想知道当您使用@Transactional with ScheduledExecutorService注释一个方法时,实际会发生什么 假设methodA是在外部调用的。假设调用methodA时,someDao.methodDao()加入事务,scheduleMethodB()立即返回,这是否正确 2秒后,调度程序调用methodB()。在这种情况下,这会有什么影响?它会在单独的事务中持有TransactionProxy并执行methodB吗?如果没有,我们如何才能做到这一点 我知道@Trans

我想知道当您使用@Transactional with ScheduledExecutorService注释一个方法时,实际会发生什么

假设methodA是在外部调用的。假设调用methodA时,someDao.methodDao()加入事务,scheduleMethodB()立即返回,这是否正确

2秒后,调度程序调用methodB()。在这种情况下,这会有什么影响?它会在单独的事务中持有TransactionProxy并执行methodB吗?如果没有,我们如何才能做到这一点

我知道@Transactional是基于代理的,所以methodB调用是调度器下的自调用

注意:由于该机制基于代理,因此仅使用“外部”方法 通过代理传入的呼叫将被拦截。这意味着 “自调用”,即目标对象内调用某些 目标对象的其他方法不会导致实际事务 在运行时,即使调用的方法标记为@Transactional


由于该类没有使用@Transactional进行注释,因此被调用的方法是否参与父被调用方方法的事务的决定取决于您是否也使用@Transactional注释被调用的方法,以及我认为您使用何种传播级别对其进行配置。比如说

@Transactional(propagation=Propagation.REQUIRED)
@Transactional(propagation=Propagation.REQUIRED)