我有一个以下的方法:
ClassA.java
@Transactional
public void methodA(){
ExecutorService executorService = Executors.newFixedThreadPool(4);
executorService.execute(new Runnable() {
public void run() {
classB.methodB();
}
});
}
ClassB.java
@Transactional
public void methodB(){
updateDB();
}
方法B能正常工作吗?根据我的理解,方法B将附加到方法A的事务中,如果方法A在方法B之前退出,那么只有方法A可以被事务提交。但是由于事务已经提交,方法B将不能被提交。
我能在方法B中使用@Transactional(propagation = Propagation.REQUIRES_NEW)吗?这可以让方法B拥有一个新的事务。但是根据Spring文档,当调用方法B时,方法A的事务将会暂停。这让我感到非常困惑。
有人能帮我解决这个问题吗?提前感谢您的帮助。