У меня есть метод, как показано ниже:
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 присоединяет транзакцию метода А, что, если метод А выходит до метода Б? Я предполагаю, что транзакция может быть совершена только методом А. Но методB не будет зафиксирован, потому что транзакция была совершена раньше.
Могу ли я использовать @Transactional (распространение = Propagation.REQUIRES_NEW) для методаB. Это может позволить methodB иметь новую транзакцию. Но согласно spring doc, передача метода A приостанавливается при вызове метода B. Я чувствую себя очень запутанным здесь.
Может ли кто-нибудь помочь мне по этой проблеме? Спасибо заранее.