Транзакции Spring с поддержкой распространения

Я хотел бы понять, как использовать транзакцию 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 , верно?

Так в чем необходимость / использование ПОДДЕРЖКИ уровня распространения?

9
задан Bhushan Uniyal 18 February 2018 в 14:18
поделиться