spring事物传播测试表

阅读更多

spring事物传播测试表:页面显示不全,请下载附件查看

 

A未否开启事务 B声明传播类型 A是否异常
a1001:是
a1002:否
B是否异常
aa:是
bb:否
A是否要回滚 B是否要回滚 测试结果A是否回滚 测试结果B是否回滚 测试结果 特点总结 备注
PROPAGATION_REQUIRED P 支持当前事务,如果当前没有事务,就新建一个事务 1、A,B分别代表两个不同类中的方法:ServiceA.methodA() 和ServiceB.methodB()

2、这里测试的是spring的声明式事务,所以A,B不能不表示同一个类中的两个方法。在同一个类中的方法调用,被调用的方法的事务声明不起效果,因为同一个类中的的方法直接调用,不会插入Spring中AOP的事务切面

3、测试代码A调用B,需要捕捉B的异常,否则B异常溢出会影响到A
参考代码格式:
ServiceA {
/**
* 事务属性配置为 PROPAGATION_REQUIRED
*/
void methodA() {
try {
ServiceB.methodB(); 
} catch (SomeException) {
// 捕捉methodB的异常
}
}
}

4、A开启事务,这里通过声明@Transactional(value = "transactionManager",propagation=Propagation.REQUIRED),不开启事务,则把声明去掉

5、
PROPAGATION_REQUIRED P
PROPAGATION_REQUIRED P
PROPAGATION_REQUIRED P
PROPAGATION_REQUIRED P
PROPAGATION_REQUIRED P
PROPAGATION_REQUIRED P
PROPAGATION_REQUIRED P
PROPAGATION_SUPPORTS P 支持当前事务,如果当前没有事务,就以非事务方式执行
PROPAGATION_SUPPORTS P
PROPAGATION_SUPPORTS P
PROPAGATION_SUPPORTS P
PROPAGATION_SUPPORTS P
PROPAGATION_SUPPORTS P
PROPAGATION_SUPPORTS P
PROPAGATION_SUPPORTS P
PROPAGATION_MANDATORY Exception Exception Exception Exception P 必须在一个事务中运行。也就是说,他只能被一个父事务调用。否则,他就要抛出异常:No existing transaction found for transaction marked with propagation 'mandatory'
PROPAGATION_MANDATORY Exception Exception Exception Exception P
PROPAGATION_MANDATORY Exception Exception Exception Exception P
PROPAGATION_MANDATORY Exception Exception Exception Exception P
PROPAGATION_MANDATORY P
PROPAGATION_MANDATORY P
PROPAGATION_MANDATORY P
PROPAGATION_MANDATORY P
PROPAGATION_REQUIRES_NEW P 新建事务,如果当前存在事务,把当前事务挂起。(即AB事务各自独立,互不影响)
PROPAGATION_REQUIRES_NEW P
PROPAGATION_REQUIRES_NEW P
PROPAGATION_REQUIRES_NEW P
PROPAGATION_REQUIRES_NEW P
PROPAGATION_REQUIRES_NEW P
PROPAGATION_REQUIRES_NEW P
PROPAGATION_REQUIRES_NEW P
PROPAGATION_NOT_SUPPORTED P 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。(即A事务与B非事务各自独立,互不影响)
PROPAGATION_NOT_SUPPORTED P
PROPAGATION_NOT_SUPPORTED P
PROPAGATION_NOT_SUPPORTED P
PROPAGATION_NOT_SUPPORTED P
PROPAGATION_NOT_SUPPORTED P
PROPAGATION_NOT_SUPPORTED P
PROPAGATION_NOT_SUPPORTED P
PROPAGATION_NEVER P 以非事务方式执行,如果当前存在事务,则抛出异常:Existing transaction found for transaction marked with propagation 'never'
PROPAGATION_NEVER P
PROPAGATION_NEVER P
PROPAGATION_NEVER P
PROPAGATION_NEVER Exception Exception Exception Exception P
PROPAGATION_NEVER Exception Exception Exception Exception P
PROPAGATION_NEVER Exception Exception Exception Exception P
PROPAGATION_NEVER Exception Exception Exception Exception P
PROPAGATION_NESTED P 以嵌套方式执行,如果当前存在事务,则嵌套在该父事务中,父事务回滚会导致子事务回滚,反之,子事务回滚不会造成父事务回滚。如果当前不存在事务,则以PROPAGATION_REQUIRED方式执行
PROPAGATION_NESTED P
PROPAGATION_NESTED P
PROPAGATION_NESTED P
PROPAGATION_NESTED P
PROPAGATION_NESTED P
PROPAGATION_NESTED P
PROPAGATION_NESTED P
  • 事务传播测试表.zip (12.4 KB)
  • 下载次数: 1

你可能感兴趣的:(spring,事物传播,测试)