spring中的事务传播
@Transaction
public void bigold(){
didi();
//出线异常
int a = 10/0;//老大的方法肯定要回滚,小弟的方法要不要回滚
}
@Transaction
public void didi(){
//小弟异常,老大要不要回滚
}
事务的传播特性是:老大调用小弟时,小弟/老大的方法怎么办。
//死活不要事务
Nerver:老大没有事务,就执行。老大有事务,小弟就不执行。
NOT_SUPPORTED:没有就以非事务,老大有事务就把老大就把老大挂起。
//可有可无
SUPPORTS
//必须有事务
REQUIRES_NEW:老大没有事务就给他新建一个事务,我还是按照我的事务进行;如果老大有事务老大的事务还是老大的,我继续执行我的。
NESTED: 嵌套事务
REQUESTED: 如果老大没有事务就新建一个事务。如果老大有事务就使用老大的事务。
MANDTORY: 如果老大没有事务,就抛出异常。如果有,就使用当前自己的事务。
spring默认的事务传播行为是REQUESTED