加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

Spring事宜撒播属性有那么难吗?看这一篇就够了

发布时间:2019-10-29 22:16:53 所属栏目:编程 来源:佚名
导读:笔者文笔功力尚浅,若有欠妥,请慷慨指出,一定谢谢不尽 进修对象要知行合一,假如只是知原理论而没实践过,那么把握的也不会出格踏实,预计过几天就会健忘,接下来我们一路实践来进修Spring事宜的撒播属性。 撒播属性 撒播属性界说的是当一个事宜要领遇到

关于什么是嵌套事宜的相关,我们用下面三个例子可以或许举办演示。

  •  第一种环境:假如查不到数据,则声名在挪用者无事宜环境下,被挪用者会新起一个事宜
  •  第二种环境:假如查不到数据,声名外层事宜可以或许影响内层事宜
  •  第三种环境:假如查到数据,声名内层事宜不影响外层事宜

接下来我们编写详细的代码

  1. // NESTED撒播属性-回滚事宜  
  2. @Override  
  3. @Transactional(rollbackFor = Exception.class,propagation = Propagation.NESTED)  
  4. public void testNestedHasException() throws RollbackException {  
  5.     jdbcTemplate.execute("INSERT INTO FOO (BAR) VALUES ('"+Global.NESTED_HAS_EXCEPTION+"')");  
  6.    // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();  
  7.     throw new RollbackException();  
  8. }  
  9. // NESTED撒播属性-不回滚事宜  
  10. @Override  
  11. @Transactional(rollbackFor = Exception.class,propagation = Propagation.NESTED)  
  12. public void testNestedNoException() throws RollbackException {  
  13.     jdbcTemplate.execute("INSERT INTO FOO (BAR) VALUES ('"+Global.NESTED_NO_EXCEPTION+"')");  

然后接下来的挪用者也会有点区别

  1. @Override  
  2. @Transactional()  
  3. public void hasTransactionalNoException() throws RollbackException {  
  4.     // NESTED撒播属性 - 挪用者有事宜,不抛非常  被挪用者有非常  
  5.     jdbcTemplate.execute("INSERT INTO FOO (BAR) VALUES ('"+Global.NESTED_HAS_EXCEPTION_TWO+"')");  
  6.     fooService.testNestedHasException();  

然后执行结果

  1. 2019-10-16 18:01:06.387  INFO 17172 --- [           main] c.e.t.t.TransactionApplication           : 第一种环境 0  
  2. 2019-10-16 18:01:06.389  INFO 17172 --- [           main] c.e.t.t.TransactionApplication           : 第二种环境 0  
  3. 2019-10-16 18:01:06.390  INFO 17172 --- [           main] c.e.t.t.TransactionApplication           : 第三种环境 1 

可以看出来嵌套事宜的本质就是外层会影响内层,内层不影响外层。而REQUIRES_NEW则是互不影响。

总结

到此刻我们已经所有门析完了七种撒播属性,从写这篇文章开始到竣事个中也遇到过一些坑,有些是不本身实践一遍是基础不知道的,以是我照旧提议读者看完这篇文章往后本身举办实践,演示各类环境,只有这样才气够烂熟于心。

【编辑保举】

  1. 微处事的数据库计划
  2. 超具体的SQL Server数据库触发器总结
  3. 公司怎样选择数据库?DynamoDB、Hadoop和MongoDB 大比拼
  4. 华为云数据库助力锦江国都开释数据代价,驱动营业厘革
  5. MySQL尝试之差异字符集数据库迁徙步调演示
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读