近日测试用例,发现这样一个现象: 自以为很了解事物,或许时间久远的缘故,没分析出来何故,遂查阅了下资料,写下了如下的内容,供参考: 1).Spring的AOP即声明式事务管理默认是针对unchecked exception回滚。也就是默认对RuntimeException()异常或是其子类进行事务回滚;checked异常,即Exception可try{}捕获的不会回滚,如果使用try-catch捕获抛出的unchecked异常后没有在catch块中采用页面硬编码的方式使用spring api对事务做显式的回滚,则事务不会回滚, “将异常捕获,并且在catch块中不对事务做显式提交=生吞掉异常” ,要想捕获非运行时异常则需要如下配置: 解决办法: 由此可以推知,在spring中如果某个业务方法被一个 整个包裹起来,则这个业务方法也就等于脱离了spring事务的管理,因为没有任何异常会从业务方法中抛出!全被捕获并吞掉,导致spring异常抛出触发事务回滚策略失效。 |
相关文章
- 04-06Spring AOP声明式事务异常回滚
- 04-06使用spring声明式事务,spring使用AOP来支持声明式事务,会根据事务属性,自动在方法调用之前决定是否开启一个事务,并在方法执行之后决定事务提交或回滚事务。
- 04-06Spring声明式事务不回滚问题
- 04-06Spring注解驱动开发(四)-----aop、声明式事务
- 04-06spring mvc + mybatis + spring aop声明式事务管理没有作用
- 04-0627Spring_的事务管理_银行转账业务加上事务控制_基于tx.aop进行声明式事务管理
- 04-06JAVAWEB 一一 框架整合(SSH,Spring+Struts2+Hibernate IOC/DI AOP声明式事务处理 定时任务)
- 04-06Spring AOP实现声明式事务代码分析
- 04-06spring aop 声明式事务管理
- 04-06Spring AOP声明式事务异常回滚(转)