传播机制
spring定义了7中事务传播机制
@Transactional(propagation=Propagation.REQUIRED) | 如果有事务, 就加入事务, 没有的话新建一个(默认情况下) | 默认情况 |
@Transactional(propagation=Propagation.SUPPORTS) | 如果当前有事务, 就加入事务, 没有事务的话以非事务方式执行 | |
@Transactional(propagation=Propagation.MANDATORY) | 如果当前有事务, 就加入事务, 没有事务抛出异常 | |
@Transactional(propagation=Propagation.REQUIRES_NEW) | 无论当前是否存在事务,都要创建一个新的事务并挂起当前事务 | |
@Transactional(propagation=Propagation.NOT_SUPPORTED) | 以非事务方式执行,如果当前存在事务则将当前事务挂起 | |
@Transactional(propagation=Propagation.NEVER) | 必须在一个没有的事务中执行,否则抛出异常(与Propagation.MANDATORY相反) | |
@Transactional(propagation=Propagation.NESTED) | 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。 | 外层事务异常,内层嵌套的异常都要回滚,内层事务异常,只会回滚内层事务。 |