Propagation属性用来枚举事务的传播行为。所谓事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播。Spring支持7种事务传播行为,默认为REQUIRED。
1、REQUIRED
如果已经存在事务就直接使用当前事务,如果没有事务就创建事务。
2、SUPPORTS
有没有事务都无所谓,有就用没有就不用。
3、MANDATORY
必须有事务,并且自己不会创建事务。
4、REQUIRES_NEW
这个方法必须创建自己的事务,外层的事务将会被挂起。
5、NOT_SUPPORTED
这个方法不能运行在事务中,运行到这个方法,外层事务会挂起。
6、NEVER
这个方法不应该出现在事务中,如果有事务到这会就报错。
7、NESTED
这个方法一定会创建自己的事务,有自己的回滚和提交,但是如果外界有一层事务那么内层事务就会嵌套进外层事务。如果没有外层事务,那么内层事务行为就和REQUIRED一样了。内层事务嵌套是意外外层事务。外层事务回滚,内层一起回滚,内层事务回滚,外界事务不一定回滚。