REQUIRED
PROPAGATION_REQUIRED / REQUIRED (spring默认事务传播机制)
支持当前事务,如果当前没有事务,则新建事务
如果当前存在事务,则加入当前事务,合并成一个事务
如果上下文中已经存在事务,那么就加入到事务中执行,如果当前上下文中不存在事务,则新建事务执行。所以这个级别通常能满足处理大多数的业务场景。
事务传播原则:
子事务回滚,父事务一定回滚
父事务回滚,子事务一定回滚
public class ServiceA {
@Transactional(propagation=Propagation.REQUIRED)
void methodA() {
ServiceB.methodB();
}
}
public class ServiceB {
@Transactional(propagation=Propagation.REQUIRED)
void methodB() {
//todo
}
}
REQUIRES_NEW
新建事务,如果当前存在事务,则把当前事务挂起
这个方法会独立提交事务,不受调用者的事务影响,父级异常,它也是正常提交