一次想不到的Spring事务失效问题跟踪(事务不会滚)

简介:

周末,鼓捣了下spring事务。spring事务配置其实很简单,这是spring优点。但问题是,不知道其中原理,遇到点问题,就抓瞎了。我就犯傻了一次。

在追踪问题时,搜索到的答案,主要有以下几类。

  1. springmvc 上下文,与service上下文冲突

  2. 数据表不支持事务(mysql 中myisam)

  3. 异常类型,默认支持RuntimeException,如果是其他异常则需要专门配置

我的问题,上面原因都不是。很遗憾。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Transactional (isolation= Isolation.READ_COMMITTED, rollbackFor={Exception. class , RuntimeException. class })
public  int  saveBlog(Blog blog) {
        int  blogId= 0 ;
     try  {
         blogId =  this .blogDao.save(blog);
         Event event =  new  Event();
         event.setEventDate( new  Date());
         String eventStr= MessageFormat.format( "this is a event from blog {0}" , blogId);
         event.setTitle(eventStr);
         if (blog.getTitle().contains( "error" )){
             throw  new  Exception( "模拟失败情况,手动触发异常" );
         }
         this .eventDao.save(event);
     finally  {
         return  blogId;
     }
}


我为了方便测试结果验证,强制返回ID.使用了finally.

跟踪日志过程中,发现,异常信息不打印,被忽略了。非常奇怪。把finally去掉,就正常打印异常堆栈。

修复方式是很显然把try finally结构去掉。




本文转自 randy_shandong 51CTO博客,原文链接:http://blog.51cto.com/dba10g/1923434,如需转载请自行联系原作者

相关文章
|
1月前
|
监控 Java 数据处理
【Spring云原生】Spring Batch:海量数据高并发任务处理!数据处理纵享新丝滑!事务管理机制+并行处理+实例应用讲解
【Spring云原生】Spring Batch:海量数据高并发任务处理!数据处理纵享新丝滑!事务管理机制+并行处理+实例应用讲解
|
1月前
|
Java 数据库 Spring
Spring事务失效的场景详解
Spring事务失效的场景详解
31 0
|
1月前
|
Java 数据库 Spring
Spring事务的传播机制(行为、特性)
Spring事务的传播机制(行为、特性)
35 0
|
2月前
|
Java 关系型数据库 数据库连接
Spring源码解析--深入Spring事务原理
本文将带领大家领略Spring事务的风采,Spring事务是我们在日常开发中经常会遇到的,也是各种大小面试中的高频题,希望通过本文,能让大家对Spring事务有个深入的了解,无论开发还是面试,都不会让Spring事务成为拦路虎。
35 1
|
1月前
|
XML Java 数据库
【二十四】springboot整合spring事务详解以及实战
【二十四】springboot整合spring事务详解以及实战
104 0
|
1月前
|
Java 数据库 开发者
|
2月前
|
Java 数据库 数据安全/隐私保护
|
2月前
|
Java 关系型数据库 MySQL
深入分析Spring事务和底层原理
深入分析Spring事务和底层原理
39 1
|
2月前
|
Java 数据库 开发者
一文带你掌握Spring事务核心:TransactionDefinition详解!
TransactionDefinition是Spring框架中用于定义事务属性的核心接口。在Spring的事务管理中,这个接口扮演着至关重要的角色,它允许开发者定制事务的各种属性,如隔离级别、传播行为、超时时间以及是否只读。
一文带你掌握Spring事务核心:TransactionDefinition详解!
|
2月前
|
XML 运维 Java
spring事务(3)基于XML的声明式事务
spring事务(3)基于XML的声明式事务
16 0