spring事物传播测试表 博客分类: spring spring事物传播测试
程序员文章站
2024-03-23 09:10:58
...
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 |