先放网上的图:
主要是在学习查阅时发现大家博客都大同小异官方语言难以理解,就记下自己的理解。
事务的传播发生在两个事务之间,所以定义场景:A事务方法内部执行B事务方法
抛开前面的单词PROPAGATION不管,仅看单词的含义非常容易理解事务的传播特性
1.requierd需要事务,A有则合并无则B新建事务运行
2.supports支持事务,A有则使用无则B非事务运行
3.mandatory强制事务,A有则使用无则B抛异常
4.required_new需要新事务,B新建事务,A有则挂起(即事务A与B无关)
5.not_supported不支持事务,B非事务运行,A有则挂起
6.never绝对不支持事务,B非事务运行,A有则抛出异常
7.nested镶套事务,若A有则事务B会跟随A提交和回滚,无则新建