Spring事务传播机制
2020-03-14 16:03:25来源:博客园 阅读 ()
Spring事务传播机制
在@Transcation( propagation = “传播机制”)
1、 PROPAGATION_REQUIRED (默认,不填)
a) 支持当前事务,如果当前没有事务,则新建事务。
b) 如果当前存在事务,则加入事务,合并成一个事务。
例子:
1) 父方法A(带有事务)中有子方法B(没带事务),如果方法A中抛出异常,那么方法A、B都会进行事务回滚。
2) 父方法(没带事务)中有子方法B(带有事务),若方法B中抛出异常,那方法A、B也都会回滚。
2、 REQUIRES_NEW
a) 新建事务,如果当前存在事务,则把当前事务挂起。
b) 这个方法会独立提交事务,不受调用者(父方法)的事务影响,即使父方法异常,他也能正常提交。
例子:
1) 父方法A(带有事务)中有子方法B(带事务),方法A抛出异常,若方法B使用@Transcation = REQUIRES_NEW,那么方法B不会因为父方法A的异常回滚而回滚,方法B会正常提交。
3、 NESTED
a) 如果当前存在事务,它将会成为父级的一个子事务,方法结束后并没有提交,只是等待父事务结束才提交。
b) 如果当前没有事务,则新建事务。
c) 如果它本身异常,父级可以捕获到它的异常,而不进行回滚。正常提交。
d) 但是如果父级异常,它必然回滚这就是喝REQUIRES_NEW的区别。
例子:
父级方法A(带事务)中 有子方法B(带事务,且propagation属性值为NESTE)。如果方法B有异常,父级方法A并不会因此回滚。但是如果方法A有异常,那么A、B方法都会因此而回滚。
4、 SUPPORTS
a) 如果当前存在事务,则加入事务。
b) 如果当前不存在事务,则以非事务方式进行。
例如:
父级方法A(带事务)中 有子方法B(无事务),那B将加入A事务中。
5、 NOT_SUPPORTS
a) 已非事务方式进行
b) 如果当前存在事务,如果当前存在事务 ,则把当前事务挂起
6、 MANDATORY
a) 如果当前存在事务,则运行在当前事务中。
b) 如果当前无事务,则抛异常,也即父级方法必须有事务
7、 NEVER
a) 以非事务方式运行,如果当前存在事务,则抛出异常,即父级方法必须无事务。
原文链接:https://www.cnblogs.com/buzheng/p/12493130.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Mybatis学习之路3
- Spring系列.ApplicationContext接口 2020-06-11
- springboot2配置JavaMelody与springMVC配置JavaMelody 2020-06-11
- 给你一份超详细 Spring Boot 知识清单 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- 掌握SpringBoot-2.3的容器探针:实战篇 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash