Spring事务传播特性: 挂起的时候不影响
REQUIRED: 使用当前的事务,如果当前没有事务,则自己新建一个事务,子方法是必须运行在一个事务中的,
如果当前存在事务,则加入这个事务,成为一个整体
向下传递,上层没有就新增,有就加入
SUPPORTS: 如果当前有事务,就以事务执行,如果没有事务,就以非事务执行
MANDTORY: 有事务就加入,没有就报错,必须以事务方式执行
REQUIRED_NEW: 如果当前存在事务,则此事务挂起,开启新事务给自己使用,报错会影响父事务,父方法异常不会影响子事务. 当前没有就新建事务.
NOT_SOPPORTED: 以非事务的方式执行,如果存在父事务,则挂起父事务.挂起父事务的时候,NOT_SOPPORTED 不错不会影响父事务.
NEVER: 不使用事务的方式执行,如果调用方存在事务,跑出异常
NESTED: 如果调用方存在事务,则嵌入这个事务,父方法报错,会回滚!
如果调用方没有事务,则新建一个事务.
如果主事务提交,则会携带子事务一起提交.
如果主事务回滚,则子事务会一起回滚,
相反,子事务异常,则父事务可以回滚或不回滚.