0%

spring事务传播

文章字数:479,阅读全文大约需要1分钟

事务传播指的是一个事务被另一个事务调用时事务的进行方式

使用

1
2
3
4
5
@Transactional(propagation = Propagation.REQUIRED)
public void methodA() {
methodB();
// do something
}

七种级别

传播行为 含义
PROPAGATION_REQUIRED 当前方法必须在事务中运行。如果存在事务,在此事务中运行,否则启动新事务
PROPAGATION_SUPPORTS 当前方法不需要事务上下文,但如果有就走当前事务中运行
PROPAGATION_MANDATORY 方法必须在事务中运行,不存在当前事务,抛异常
PROPAGATION_REQUIRED_NEW 当前方法必须运行在它自己的事务中,一个新的事物将被启动。如果存在当前事务,在改方法执行期间,当前事务会被挂起。如果使用JTATransactionManager的话,则需要访问TransationManager
PROPAGATION_NEVER 表示当前方法不应该云心在事务上下文中。如果当前正有一个事物在运行,则抛异常
PROPAGATION_NESTED 如果当前存在事务,方法嵌套在事务中运行。嵌套的事务可以独立于当前事务进行单独地提交或回滚。如果当前事务不存在,那么其行为与PROPAGATION_REQUIRED一样