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

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

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

接下来我们看一下挪用者要领的例子

  1. @Service  
  2. public class BarServiceImpl implements BarService{  
  3.     @Autowired  
  4.     private FooService fooService;  
  5.     // 有事宜  
  6.     @Override  
  7.     @Transactional(rollbackFor = Exception.class)  
  8.     public void hasTransactional() throws RollbackException {  
  9.         // 挪用者有事宜,抛非常  被挪用者无非常  
  10.         fooService.testRequiredNoException();  
  11.         throw new RollbackException();  
  12.     }  
  13.     // 无事宜  
  14.     @Override  
  15.     public void noTransactional() throws RollbackException {  
  16.         // 挪用者无事宜,不抛非常  被挪用者有非常  
  17.         fooService.testRequiredHasException();  
  18.     }  

此时我们在措施挪用时举办查询

  1. String noException = Global.REQUIRED_NO_EXCEPTION;  
  2. String hasException = Global.REQUIRED_HAS_EXCEPTION;   
  3. try {  
  4.     barService.noTransactional();  
  5. }catch (Exception e){  
  6.     log.info("第一种环境 {}",  
  7.             jdbcTemplate  
  8.                     .queryForObject("SELECT COUNT(*) FROM FOO WHERE BAR='"+hasException+"'", Long.class));  
  9. }  
  10. try {  
  11.     barService.hasTransactional();  
  12. }catch (Exception e){  
  13.     log.info("第二种环境 {}",  
  14.             jdbcTemplate  
  15.                     .queryForObject("SELECT COUNT(*) FROM FOO WHERE BAR='"+noException+"'", Long.class));  

查察打印出来的日记

  1. 2019-10-16 13:02:04.142  INFO 11869 --- [           main] c.e.t.t.TransactionApplication           : 第一种环境 0  
  2. 2019-10-16 13:02:04.143  INFO 11869 --- [           main] c.e.t.t.TransactionApplication           : 第二种环境 0 

我们看到我们都没有查到响应的数据,声名数据都回滚了。此时我们应该就领略了那句话支持当前事宜,假如没有就新建事宜。

PROPAGATION_SUPPORTS

被挪用者是否有事宜,完全依靠于挪用者,挪用者有事宜则有事宜,挪用者没事宜则没事宜。

接下来我们照旧用上面的两个例子举办演示

  •  第一种环境:被挪用者抛出非常的环境下,假如仍能查询到数据,声名事宜没有回滚,声名被挪用者没有事宜
  •  第二种环境:挪用者抛出非常环境下,假如查不到数据,声名两个要领在一个事宜中

接下来如故是例子演示

(编辑:湖南网)

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

热点阅读