当前位置:   article > 正文

spring中的事务传播机制_propagation.not_supported

propagation.not_supported

 

  1. 事务传播行为类型 说明
  2. PROPAGATION_REQUIRED 如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。
  3. PROPAGATION_SUPPORTS 支持当前事务,如果当前没有事务,就以非事务方式执行。
  4. PROPAGATION_MANDATORY 使用当前的事务,如果当前没有事务,就抛出异常。
  5. PROPAGATION_REQUIRES_NEW 新建事务,如果当前存在事务,把当前事务挂起。
  6. PROPAGATION_NOT_SUPPORTED 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
  7. PROPAGATION_NEVER 以非事务方式执行,如果当前存在事务,则抛出异常。
  8. PROPAGATION_NESTED 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。

spring中的事务传播共分为7种,下面结合实例分析以下:
一.PROPAGATION_REQUIRED   

如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中.

分析2个场景:

1.外围没有事务

  1. @Override
  2. //外围不开启事务
  3. public void outNoTransaction() {
  4. User1 user1 = new User1();
  5. user1.setId(1);
  6. user1.setName("zs");
  7. User2 user2 =new User2();
  8. user2.setId(2);
  9. user2.setName("ls");
  10. //1.外围不开启事务,内部开启事务,user1不抛异常,user2抛异常
  11. user1Service.add(user1);
  12. user1Service.addException(user1);
  13. }

测试结果user1插入正常,user2回滚,证明外部没有事务,内部的user1Service和user2Service会各自开启一个事务

2.外围开启事务

  1. @Override
  2. //外围不开启事务
  3. @Transactional(propagation = Propagation.REQUIRED)
  4. public void outNoTransaction() {
  5. User1 user1 = new User1();
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/405426
推荐阅读
相关标签
  

闽ICP备14008679号