Java程序员只会CRUD连Spring事务传播机制都不懂?( 三 )


从doSetRollbackOnly(status)这个单词就知道 , required的时候 , 已经把这个事务设置成RollbackOnly , 因此 , 虽然try住了 , 但是Example2执行完提交的时候 , 却发现无法提交 , 所以异常信息如下:
Transaction rolled back because it has been marked as rollback-only一图胜千言 , 我用一张图来描述这个关系
 

Java程序员只会CRUD连Spring事务传播机制都不懂?

文章插图
 
那为啥案例三 , 又能插入数据呢?还是用一张图来描述
Java程序员只会CRUD连Spring事务传播机制都不懂?

文章插图
 
需要注意@Transactional有很多注意点
  • 在同个类中调用A方法调用B方法 , B方法是不会开启事务 , 自然也就不会用到事务的传播机制 。这个原理后续肥朝会解析 , 当然如果你连这句话都不知道是什么意思 , 假粉实锤了!
  • @Transactional默认情况下 , 只回滚RuntimeException 。如果你抛出的异常不是RuntimeException , 可能导致在默认情况下和本文有所偏差
当然 , 这么多注意点 , 哪记得住 , 因此 , 留意后续的原理解析 , 就非常有必要了 。
 



推荐阅读