Я хотел бы понять, как использовать транзакцию Spring с поддержкой распространения. В java-документах упоминается, что если метод, имеющий @Transactional (spread = Propagation.SUPPORTS)
, вызывается из транзакции, он поддерживает транзакцию, но если транзакции нет, метод выполняется без транзакции.
Разве это уже не поведение весенних транзакций независимо от Propagation.SUPPORTS
?
public class ServiceBean {
@Transactional(propagation = Propagation.SUPPORTS)
public void methodWithSupportsTx() {
//perform some database operations
}
}
public class OtherServiceBean {
@Transactional(propagation = Propagation.REQUIRED)
public void methodWithRequiredTx() {
//perform some database operations
serviceBean.methodWithSupportsTx();
}
}
В приведенном выше примере кода, независимо от того, имеет ли methodWithSupportsTx ()
аннотацию @Transactional (spread = Propagation.SUPPORTS)
, она будет выполняться в транзакции, в зависимости от того, будет ли methodWithRequiredTx ()
имеет аннотацию @Transactional
, верно?
Так в чем необходимость / использование ПОДДЕРЖКИ уровня распространения?