纸上得来终觉浅,绝知此事要躬行
这次的主角是@Transactional(propagation= Propagation.NOT_SUPPORTED)
调用者事务方法调用使用该注解的申明方法时,事务不会进到此方法。即把外部事务挂起,直到此方法执行完后恢复外部事务。
1、InsertUser 加上not_supported ,InsertCuser 不加事务
两者均不使用事务
2、InsertUser 不加事务 ,InsertCuser 加上not_supported
两者均不使用事务
3、InsertUser 加上 not_supported,InsertCuser 加上not_supported
两者均不使用事务
4、InsertUser 加上 not_supported,InsertCuser 加上never
两者均不使用事务
5、InsertUser 加上never ,InsertCuser 加上not_supported
两者均不使用事务
6、InsertUser 加上not_supported,InsertCuser 加上nested
InsertUser 非事务状态执行,InsertCuser 开启事务
7、InsertUser 加上nested,InsertCuser 加上not_supported
InsertUser 开启事务,InsertCuser 非事务状态执行
大总结
实验 | InsertUser 调用者
|
InsertCuser 被调用者
|
结果 |
---|---|---|---|
1 | not_supported | 不加 | 两者均不使用事务 |
2 | 不加 | not_supported | 两者均不使用事务 |
3 | not_supported | not_supported | 两者均不使用事务 |
4 | not_supported | never | 两者均不使用事务 |
5 | never | not_supported | 两者均不使用事务 |
6 | not_supported | nested | InsertUser 非事务状态执行,InsertCuser 开启事务 |
7 | nested | not_supported | InsertUser 开启事务,InsertCuser 非事务状态执行 |