课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
Spring框架的学习与应用是Java程序员需要重点掌握的一个软件编程开发技术知识,而本文我们就通过案例分析来简单了解一下,Spring事务概念与传播类型分析。
1、事务传播类型
事务传播类型,指的是事务与事务之间的交互策略。例如:在事务方法A中调用事务方法B,当事务方法B失败回滚时,事务方法A应该如何操作?这就是事务传播类型。
2、REQUIRED
REQUIRED是Spring默认的事务传播类型,该传播类型的特点是:当前方法存在事务时,子方法加入该事务。此时父子方法共用一个事务,无论父子方法哪个发生异常回滚,整个事务都回滚。即使父方法捕捉了异常,也是会回滚。而当前方法不存在事务时,子方法新建一个事务。
3、REQUIRES_NEW
REQUIRES_NEW也是常用的一个传播类型,该传播类型的特点是:无论当前方法是否存在事务,子方法都新建一个事务。此时父子方法的事务时独立的,它们都不会相互影响。但父方法需要注意子方法抛出的异常,避免因子方法抛出异常,而导致父方法回滚。
4、NESTED
NESTED也是常用的一个传播类型,该方法的特性与REQUIRED非常相似,其特性是:当前方法存在事务时,子方法加入在嵌套事务执行。当父方法事务回滚时,子方法事务也跟着回滚。当子方法事务发送回滚时,父事务是否回滚取决于是否捕捉了异常。如果捕捉了异常,那么就不回滚,否则回滚。
可以看到NESTED与REQUIRED的区别在于:父方法与子方法对于共用事务的描述是不一样的,REQUIRED说的是共用同一个事务,而NESTED说的是在嵌套事务执行。这一个区别的具体体现是:在子方法事务发生异常回滚时,父方法有着不同的反应动作。
对于REQUIRED来说,无论父子方法哪个发生异常,全都会回滚。而REQUIRED则是:父方法发生异常回滚时,子方法事务会回滚。而子方法事务发送回滚时,父事务是否回滚取决于是否捕捉了异常。
5、使用方法论
看完了事务的传播类型,我们对Spring事务又有了深刻的理解。
看到这里,你应该也明白:使用事务,不再是简单地使用@Transaction注解就可以,还需要根据业务场景,选择合适的传播类型。那么我们再升华一下使用Spring事务的方法论。一般来说,使用Spring事务的步骤为:
根据业务场景,分析要达成的事务效果,确定使用的事务传播类型。
在Service层使用@Transaction注解,配置对应的propogation属性。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。