可以从以下多个维度配置Spring事务。
propagation
表示当前事务与父事务(同一个线程中之前申明事务)的关系。父子事务体现为,方法调用栈的调用先后顺序。
说得更直白点,就是一个方法Method1调用另外一个申明Transaction的Method2,Method1可能申明Transaction,也可能没有,Method2如何处理Transaction的问题。
PROPAGATION_REQUIRED
如果父事务存在,使用父事务,没有则创建一个新的。Spring默认值。
例子:@Transactional(propagation=Propagation.REQUIRED)
PROPAGATION_SUPPORTS
如果父事务存在,使用父事务,没有则就不使用事务。
例子:@Transactional(propagation=Propagation.PROPAGATION_SUPPORTS)
PROPAGATION_MANDATORY
如果父事务存在,使用父事务,没有则抛出异常。
例子:@Transactional(propagation=Propagation.PROPAGATION_MANDATORY)
PROPAGATION_REQUIRES_NEW
总是创建一个新的事务。如果父事务存在,父事务暂时挂起,没有则无需额外处理。
例子&