Chao's Blog Chao's Blog
首页
  • vue

    • vue路由
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • java
  • spring
  • springboot
  • springcloud
  • git
  • maven
  • nginx
  • tomcat
  • springmvc
  • jvm
  • 图数据库
  • mysql数据库
  • redis数据库
  • windows下docker安装nginx并挂载目录
  • linux命令
  • linux安装软件
  • linux脚本
  • idea
  • vscode
  • 归档
  • 综合项目

    • 若依项目
    • mall项目
  • java
  • mybatis
  • xxl-job
  • mybatis
GitHub (opens new window)

~chao

永远菜鸟,不断努力~
首页
  • vue

    • vue路由
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • java
  • spring
  • springboot
  • springcloud
  • git
  • maven
  • nginx
  • tomcat
  • springmvc
  • jvm
  • 图数据库
  • mysql数据库
  • redis数据库
  • windows下docker安装nginx并挂载目录
  • linux命令
  • linux安装软件
  • linux脚本
  • idea
  • vscode
  • 归档
  • 综合项目

    • 若依项目
    • mall项目
  • java
  • mybatis
  • xxl-job
  • mybatis
GitHub (opens new window)
  • java

    • java深度克隆
    • restemplate

    • hashcode()和equals()的作用、区别、联系
    • java8新特性
    • 接口与抽象类
    • java深度克隆工具类支持对象和list克隆
    • 子线程执行10次后,主线程再运行5次,这样交替执行三遍
    • CountDownLatch的理解和使用
    • CAS详解
    • java中的各种锁详细介绍
    • java线程池
    • Java锁之偏向级锁、轻量级锁、重量级锁
    • Transactional注解与try{}catch(Exception e){}同时使用事务控制无效问题
    • JAVA8 optional用法
    • CyclicBarrier 使用详解
    • Semaphore 使用及原理
    • Java中七大垃圾回收器
  • spring

  • springboot

  • springcloud

  • git

  • maven

  • nginx

  • tomcat

  • springmvc

  • jvm

  • 正则表达式

  • 消息中间件

  • python

  • 后端
  • java
~chao
2023-02-16

Transactional注解与try{}catch(Exception e){}同时使用事务控制无效问题

# @Transactional注解与try{}catch(Exception e){}同时使用事务控制无效问题

原文链接:https://blog.csdn.net/moke_ant/article/details/104994442 (opens new window)

1.@Transactional的使用
通常我们使用注解事务是配置文件开启注解驱动,在相关的类或是方法上通过@Transaction注解的方式使用事务。
2.@Transactional 使用注意点
注解只有在抛出RuntimeException 或者是Erroe时从才会触发事务的回滚,常见的非RuntimeException是不会触发事务的回滚的。
但是我们平时做业务处理时,需要捕获异常,即在方法中使用try{}catch(Exception e){},此时在方法上在使用@Transactional注解, 方法出现异常也不会进行回滚。
同理 在其他文章或是解答中有建议使用@Transactional(rollbackFor = Exception.class) 进行事务的回滚,亲测此方法也是不行的,如果你的方法中有使用到了其他异常或是自定义的异常,同样事务也是不会回滚的。
最后的解决方法是在catch中进行手动的事务回滚。具体案例如下代码
在这里插入图片描述
本人的理解是 在方法中已经进行try catch 即捕获异常并且把异常进行处理了。异常的生命周期已经结束,而并没有将异常抛出所以@Transtaction 注解并没有能监听到异常 所以 注解没哟起到事务回滚的作用

编辑 (opens new window)
上次更新: 2024/01/26, 05:03:22
Java锁之偏向级锁、轻量级锁、重量级锁
JAVA8 optional用法

← Java锁之偏向级锁、轻量级锁、重量级锁 JAVA8 optional用法→

最近更新
01
python使用生成器读取大文件-500g
09-24
02
Windows环境下 Docker Desktop 安装 Nginx
04-10
03
使用nginx部署多个前端项目(三种方式)
04-10
更多文章>
Theme by Vdoing | Copyright © 2022-2024 chaos | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式