注解版Spring事物的传播特性详解

1:事物的特性:原子性,一致性,隔离性,持续性。

2:事物的隔离级别:读未提交,读已提交,读重复,序列化。

Spring事物的传播特性一共有七种:

传播特性 含义 用法
PROPAGATION_REQUIRED 表示当前方法必须在一个包含事物的上下文环境中运行,也就是说,进入该方法时,如果已经开启了事物,则在当前事物下运行,否则,开启一个新的事物。
@Transactional(propagation = Propagation.REQUIRED)
PROPAGATION_SUPPORTS 表示该方法可以在事物环境下运行,但不是必须的,也就是说,进入该方法时,如果已经开启了事物,则在事物环境下运行,否则不在事物环境下运行。
@Transactional(propagation = Propagation.SUPPORTS)
PROPAGATION_MADATORY 表示该方法必须在事物环境下运行,如果调用该方法时不包含事物,则抛出IllegalTransactionStateException异常。
@Transactional(propagation = Propagation.MANDATORY)
PROPAGATION_NESTED 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与propagation_required类似的操作 @Transactional(propagation = Propagation.NESTED)
PROPAGATION_NEVER 表示该方法不能在事物环境下运行,如果调用该方法事已经开始了事物,则抛出异常。
@Transactional(propagation = Propagation.NEVER)
PROPAGATION_REQUIRES_NEW 表示进入该方法时,开启一个新的事物。
@Transactional(propagation = Propagation.REQUIRES_NEW)
PROPAGATION_NOT_SUPPORTED 表示该方法不应该在事物中运行,如果进入该方法时,已经开启了事物,则将该事物挂起,直到方法执行完毕再将挂起的事物重新开启。
@Transactional(propagation = Propagation.NOT_SUPPORTED)
     

猜你喜欢

转载自blog.csdn.net/caishi13202/article/details/82152616