@Transactional中的propagation
时间: 2023-10-28 13:58:18 浏览: 104
Spring @Transactional工作原理详解
@Transactional中的propagation属性是用来定义事务的传播特性。它指定了被调用方法和调用方法之间的事务关系。在Spring事务管理中,propagation属性可以设置为多种值,包括REQUIRED、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER和NESTED等。每个值代表不同的事务传播特性。
例如,在一个类中的方法A上添加了@Transactional(propagation=propagation.REQUIRED)注解,而在方法A中调用了另一个类B的方法bMethod。如果B的方法bMethod也添加了@Transactional(propagation=propagation.REQUIRED)注解,则B的方法bMethod将加入到A的事务中,即它们共享同一个事务。这就是事务的传播特性。
另外,propagation属性还可以设置为其他值,比如REQUIRES_NEW,表示每次调用都会启动一个新的事务,与调用者的事务没有关联。还有SUPPORTS,表示如果有事务存在,则加入到该事务中,如果没有事务存在,则以非事务方式执行。而NOT_SUPPORTED表示以非事务方式执行方法,即不需要事务管理。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
阅读全文