
课程咨询: 400-996-5531
投诉建议: 400-111-8989
认真做教育 专心促就业
Spring框架是程序员在学习Java编程开发语言的时候需要重点掌握的一个框架结构,而本文我们就通过案例分析来简单了解一下,Spring框架事务传播机制。
Spring事务传播机制是指,包含多个事务的方法在相互调用时,事务是如何在这些方法间传播的。
既然是“事务传播”,所以事务的数量应该在两个或两个以上,Spring事务传播机制的诞生是为了规定多个事务在传播过程中的行为的。比如方法A开启了事务,而在执行过程中又调用了开启事务的B方法,那么B方法的事务是应该加入到A事务当中呢?还是两个事务相互执行互不影响,又或者是将B事务嵌套到A事务中执行呢?所以这个时候就需要一个机制来规定和约束这两个事务的行为,这就是Spring事务传播机制所解决的问题。
Spring事务传播机制有哪些?
Spring事务传播机制可使用@Transactional(propagation=Propagation.REQUIRED)来定义,Spring事务传播机制的级别包含以下7种:
Propagation.REQUIRED:默认的事务传播级别,它表示如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。
Propagation.SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。
Propagation.MANDATORY:(mandatory:强制性)如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。
Propagation.REQUIRES_NEW:表示创建一个新的事务,如果当前存在事务,则把当前事务挂起。也就是说不管外部方法是否开启事务,Propagation.REQUIRES_NEW修饰的内部方法会新开启自己的事务,且开启的事务相互独立,互不干扰。
Propagation.NOT_SUPPORTED:以非事务方式运行,如果当前存在事务,则把当前事务挂起。
Propagation.NEVER:以非事务方式运行,如果当前存在事务,则抛出异常。
Propagation.NESTED:如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于PROPAGATION_REQUIRED。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。