spring中多个事务之间可以互相影响.影响的方式称为事务传播行为
下面代码用来设定事务的传播行为
@Transactional(propagation = Propagation.REQUIRES_NEW)
事务传播行为列表
名称 | 行为 |
---|---|
REQUIRED | 如果有事务, 那么加入事务, 没有的话新建一个(默认) |
REQUIRES_NEW | 不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务 |
SUPPORTS | 如果其他bean调用这个方法,在其他bean中声明事务,那就用事务.如果其他bean没有声明事务,那就不用事务 |
NOT_SUPPORTED | 容器不为这个方法开启事务 |
MANDATORY | 必须在一个已有的事务中执行,否则抛出异常 |
NEVER | 必须在一个没有的事务中执行,否则抛出异常(与Propagation.MANDATORY相反) |