spring事物传播propagation类别含义的示例分析-创新互联

小编给大家分享一下spring事物传播propagation类别含义的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的金平网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

在spring事务中针对注解transaction,我们在定义的时候会注明事物的传播类别,默认的是required。

required:使用当前的事务,如果当前没有事务,则自己新建一个事务,子方法必须运行在一个事务,如果当前存在事务,则加入这个事务,成为一个整体。

ex:领导没饭吃,我有钱,我自己买了自己吃;领导有饭吃,会分给我一起吃。

supports:如果当前有事务,则使用事务;如果当前没有事务,则不使用事务。

ex:领导没饭吃,我也没饭吃;领导有饭吃,我也有饭吃。

mandatory:该传播必须存在一个事务,如果不存在则抛出异常。

ex:领导必须管饭,不管饭没饭吃,我超级不开心,老子不干了(抛出异常)。

requires_new:如果当前有事务,则挂起该事物,并且自己创建一个新的事务给自己使用;如果当前没有事务,则跟required一样

ex:铃铛有饭吃,我看不上,不要,我自己买着自己吃。

not_supported:如果当前有事务,则挂起事务,自己不使用事务去运行数据库操作。

ex:领导有饭吃,分给我吃,我不要放一边,我不吃。

never:如果当前事务存在,则抛出异常。

ex:领导有饭吃,我不想吃,不想让领导也吃,我抛出异常。

nested:如果当前有事务,则开启子事务(嵌套事务),嵌套事务式独立提交或者回滚;

 如果当前没有事务,则跟required一样;

如果主事务提交,则会携带子事务一起提交;

如果主事务回滚,则子事务会一起回滚。相反子事务异常,父事务可以回滚或者不会滚(try cache捕获了子事务的异常)。

 ex:领导决策不对。老板怪罪,带着小弟我一起受罪。小弟我出现差错,领导可以选择推卸责任或者帮我一起承担。

测试代码结构:

public void 主事务(领导) save(){
	  主事务save();
	  子事务1save();
	  子事务2save();
}
//子事务注明事物的传播类型
public void 子事物1(我)save(){
	  save1();
	  1/0;
	//此处抛异常
}
public void 子事务2(我)save(){
	  save2();
}

以上是“spring事物传播propagation类别含义的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联网站建设公司行业资讯频道!

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章名称:spring事物传播propagation类别含义的示例分析-创新互联
转载注明:http://myzitong.com/article/ddjjee.html