周末,鼓捣了下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,如需转载请自行联系原作者

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

  1. spring中事务失效的几种情况

    下面简单介绍下,spring中常见的事务失效的几种情况.让我们在开发的过程避免这些情况,写出正确而且优雅的代码. 文章目录 数据库引擎不支持,mysql需要InnoDB 方法必须是public的 方法 ...

  2. wordpress外部调用到html_Spring 自调用事务失效,你是怎么解决的?

    前言 相信大家都遇到一种事务失效场景,那就是 Spring 自调用,就是在 Service 方法内,调用另一个加 @Transactional 注解的方法,发现事务失效,这时候你是怎么解决的呢? 公众 ...

  3. html调用接口_Spring 自调用事务失效,你是怎么解决的?

    前言 " 相信大家都遇到一种事务失效场景,那就是 Spring 自调用,就是在 Service 方法内,调用另一个加 @Transactional 注解的方法,发现事务失效,这时候你是怎么解 ...

  4. springMVC重复扫描bean导致声明式事务失效

    文章目录 1 配置文件 1.1 加载spring容器配置 1.2 加载springMvc容器配置 1.3 spring声明式事务配置 2 声明式事务失效 2.1 事务失效的原因 2.2 解决方案 3 ...

  5. seata1.5.1 分布式事务没有传递xid,xid为null,事务参与者获取不到xid导致事务失效解决方案

    环境版本:seata--- 1.5.1 问题:分布式事务没有传递xid导致事务失效解决方案,事务参与者通过RootContext.getXID()没有获取到xid. 解析seata传递原理: 1.在G ...

  6. Spring 事务失效?看这篇文章就够了!

    欢迎关注方志朋的博客,回复"666"获面试宝典 用 Spring 的 @Transactional 注解控制事务有哪些不生效的场景? 不知道小伙伴们有没有这样的经历,在自己开心的编 ...

  7. 聊聊Spring事务失效的12种场景,太坑人了

    前言 对于从事java开发工作的同学来说,spring的事务肯定再熟悉不过了. 在某些业务场景下,如果一个请求中,需要同时写入多张表的数据.为了保证操作的原子性(要么同时成功,要么同时失败),避免数据 ...

  8. 【每日提高之声明式事物】spring声明式事务 同一类内方法调用事务失效

    2019独角兽企业重金招聘Python工程师标准>>> [问题] Spring的声明式事务,我想就不用多介绍了吧,一句话"自从用了Spring AOP啊,事务管理真轻松啊, ...

  9. 每日一博 - 常见的Spring事务失效事务不回滚案例集锦

    文章目录 事务不生效 方法内部调用 修复方法一 : [新加一个Service方法] 修复方法二:[在该Service类中注入自己] 修复方法三:[通过AopContent类]<---- 推荐 访 ...

最新文章

  1. Quartz 2D Programming Guide笔记
  2. Android性能调优篇之探索垃圾回收机制
  3. cherry-pick,revert和rebase使用的3-way合并策略
  4. ORA-02082: 回送数据库链接必须具有连接限定词
  5. 微信收款音响s3服务器断开,微信收款音响s2和s3有什么区别
  6. 如何在虚拟机中安装kali linux
  7. 【转】Sql Server 跨服务器连接
  8. cocos2d-x学习笔记10:动作3:补间动作
  9. Drools规则引擎使用入门
  10. 数学分析 隐函数定理及其应用(第18章)
  11. 如何进行邮件营销,邮件营销群发是否有效?
  12. Coreseek、Sphinx-for-chinaese、Sphinx+Scws区别
  13. ipad中的神级笔记软件 Notability的使用方法
  14. 稠密的无人机激光雷达点云数据处理与分析方法与工具科普系列(一)
  15. gprmax构造多层均质土壤模型
  16. Dubbo-05 20190317
  17. cml sml区别_.CML与SML有何联系和区别?
  18. 18天精读掌握《费曼物理学讲义卷一》 第13天 2019/6/29
  19. 华为数通 软开2021实习生 业务主管面 (已通过)
  20. 推荐几个优质的公众号!

热门文章

  1. CAS SSO 原理 - 基础模式
  2. Oracle怎么查外键建在哪个表上
  3. Flask的flask-sqlalchemy
  4. 网络传播侵权认定启用“服务器标准”
  5. php函数,static,globalkeyword及三种变量作用域
  6. 基于LODOP的打印
  7. 进程管理ps,top
  8. JUNOS LDP标签分发过程详解
  9. cookie、localStorage和sessionStorage区别
  10. PL/SQL语言基础