一次想不到的Spring事务失效问题跟踪(事务不会滚)
2017-05-08 21:35
477 查看
周末,鼓捣了下spring事务。spring事务配置其实很简单,这是spring优点。但问题是,不知道其中原理,遇到点问题,就抓瞎了。我就犯傻了一次。
在追踪问题时,搜索到的答案,主要有以下几类。
springmvc 上下文,与service上下文冲突
数据表不支持事务(mysql 中myisam)
异常类型,默认支持RuntimeException,如果是其他异常则需要专门配置
我的问题,上面原因都不是。很遗憾。
我为了方便测试结果验证,强制返回ID.使用了finally.
跟踪日志过程中,发现,异常信息不打印,被忽略了。非常奇怪。把finally去掉,就正常打印异常堆栈。
修复方式是很显然把try finally结构去掉。
在追踪问题时,搜索到的答案,主要有以下几类。
springmvc 上下文,与service上下文冲突
数据表不支持事务(mysql 中myisam)
异常类型,默认支持RuntimeException,如果是其他异常则需要专门配置
我的问题,上面原因都不是。很遗憾。
@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结构去掉。
相关文章推荐
- spring 声明式事务、异步调用、AOP灯增强类功能 失效问题
- spring+springmvc+mybatis事务失效问题
- 解决spring、springMVC重复扫描导致事务失效的问题
- Junit4 spring注解事务不会滚问题
- spring注解实现业务层事务管理,当业务层自调用时,事务失效问题解决
- spring 事务配置以及事务内自我调用失效问题汇总
- spring声明事务失效问题
- spring注解实现业务层事务管理,当业务层自调用时,事务失效问题解决
- Spring Data JPA事务失效问题
- 关于Spring的@Transactional注解失效以及事务无法回滚问题
- spring + springMVC声明式事务失效问题
- 记一次spring-session登录后失效的问题
- spring声明事务失效问题(二)
- Spring 事务失效问题
- spring 的事务问题,事务失效,事务传播
- 解决spring、springMVC重复扫描导致事务失效的问题
- spring管理的hibernate事务不会自动flush的问题-今天真遇到这问题了
- spring boot整合shiro后,部分注解(Cache缓存、Transaction事务等)失效的问题
- 又碰到问题了...附spring事务的xml配置
- Spring中事务管理与Hibernate自带事务管理冲突的一个问题