1. PROPAGATION_REQUIRED
如果当前没有事务,就去创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。
2.PROPAGATION_SUPPORTS
支持当前事务,如果当前存在事务,就加入 该事务,如果当前不存在事务,就以非事务执行。
3.PROPAGATION_MANDATORY
支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常。
4.PROPAGATION_REQUIRES_NEW
创建新事务,无论当前存不存在事务,都创建新事务
5.PROPAGATION_NOT_SUPPORTED
以非事务方式执行,如果当前存在事务,就把当前事务挂起。
6.PROPAGATION_NEVER
以非事务方式执行,如果当前存在事务,则抛出异常。
7.PROPAGATION_NESTED
如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行 与PROPAGATION_REQUIRED类似的操作。
同一个对象内事务方法互调默认失效
- 原因:绕过了代理对象
- 解决方案:引入aop,开启aspectj动态代理功能。