Spring声明式事务注意点,以及不生效情况
来源:互联网 发布:苹果6网络通信出现问题 编辑:程序博客网 时间:2024/05/22 01:36
情况1:
class XxxService{ public void methodA(){ methodB() } @Transactional public void methodB(){ saveXX1(); saveXX2(); }}
- 入口,调用XxxService的methodA方法。methodA内部调用methodB方法。
- 情况1【事务不生效】-此事methodA上没有事务注解
- 可以给methodA也增加@Transactional
情况2:
class XxxService{ @Transactional public void methodA(){ methodB() } @Transactional(propagation = Propagation.REQUIRES_NEW) public void methodB(){ saveXX1(); saveXX2(); }}
- 入口,调用XxxService的methodA方法。methodA内部调用methodB方法。methodB意图开启新事务
- 情况2【事务不新创建,传播沿用methodA的事务】
- 可以将methodB方法放到其他类中,解决问题。(即:通过YyyService.methodB()方式掉用)
注意点:
- 异常问题,spring默认异常是RuntimeException通过下面方法修改,@Transactional(rollbackFor = Exception.class)
- 回滚问题,可以通过throw new RuntimeTimeException()回滚,或者try..catch..异常后,显示回滚。
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- 如果try… catch..异常后,不再次抛出或者不显示回滚,事务不生效
- 数据库引擎要支持事务,如果是mysql,注意表要使用支持事务的引擎,比如innodb,如果是myisam,事务是不起作用的。
- 开启注解事务的支持:
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
阅读全文
0 0
- Spring声明式事务注意点,以及不生效情况
- Spring事务rollbackFor不生效的一种情况
- spring事务注解不生效
- Spring事务不生效的解决过程
- spring mvc 事务不生效 不回滚
- spring mvc 事务不生效 不回滚
- spring mvc 注解事务不生效
- Spring事务不生效问题汇总
- spring事务 方法调用内部方法 事务不生效
- spring声明式事务
- Spring---声明式事务
- Spring声明式事务
- Spring声明式事务
- spring 声明式事务
- 声明式事务 spring
- Spring声明式事务
- Spring声明式事务
- spring 声明式事务
- async/await
- ASP.NET MVC DropDownList的使用
- cenos系统python项目报错mysql Access denied for user root@localhost错误解决方法
- 深夜博客
- C++标准库中string类型与数值类型之间的转换
- Spring声明式事务注意点,以及不生效情况
- 小游戏--三子棋(任意几子棋)
- async/await
- System.arraycopy()和Arrays.copyOf()的区别
- ActiveMQ(1)-初探
- tp3.2笑脸改版例子1
- CCF-201709-1-打酱油
- Unicode与UTF-8的区别与联系
- Python内建函数—isinstance()函数