最近遇到了事务不回滚的情况,很多方法都加tyr catch,在catch中打印日志。但是方法异常时候,日志打印了事务却没有回滚。

Spring AOP异常捕获原理
被拦截的方法需显式抛出异常,并不能经任何处理,这样AOP代理才能捕获到方法的异常,才能进行回滚,默认情况下AOP只捕获RunTimeException的异常。
简而言之:就是我们用事务注解后,只能在当前@Transactional注解的方法里面try-catch,调用方法中一律不能捕获异常,否则事务还是会无效。

所以@Transactional注解无效解决方案有三:
1.在最外层执行方法中try-catch内throw RunTimeException。

2.在方法上throws异常

3.手动回滚

关注公众号,一起进步,一起成长。

SpringBoot中级篇-事务@Transactional注解无效相关推荐

  1. 面试一口气说出Spring的声明式事务@Transactional注解的6种失效场景

    一.Spring事务管理的两种方式 事务管理在系统开发中是不可缺少的一部分,Spring提供了很好事务管理机制,主要分为编程式事务和声明式事务两种. 编程式事务:是指在代码中手动的管理事务的提交.回滚 ...

  2. 事务 Transactional注解

    前言 事务:4种事务特性,5种隔离级别,7种传播行为 一.什么是事务? 事务逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败. 二.事务的特性(4种) 原子性 (atomici ...

  3. Spring声明式事务@Transactional 注解参数详解

    @Transactional注解中常用参数说明 参数名称 功能描述 readOnly 该属性用于设置当前事务是否为只读事务,设置为true表示只读,false则表示可读写,默认值为false.例如:@ ...

  4. springBoot方法上面添加@Transactional注解与类上面添加@Transactional注解的区别

    @Transactionalpublic void updateData(){aService.updateA();//更新A表bService.updateB();//更新B表cService.up ...

  5. SpringBoot配置类替代@Transactional注解实现事务的控制

    package com.example.zcw.config;import org.aspectj.lang.annotation.Aspect; import org.springframework ...

  6. Spring异步Async和事务Transactional注解

    Spring开发中我们我们常常用到@Transaction和@Async,但这2个注解加在一起很多的开发者不敢用,担心事务不生效.下面我们就仔细讲解一下这2个注解同时运用,文章用3个场景讲述它们之间的 ...

  7. Spring MVC学习总结(18)——SpringMVC事务Transactional注解使用总结

    一.事物注解方式: @Transactional 当标于类前时, 标示类中所有方法都进行事物处理 , 例子: @Transactional  public class TestServiceBean ...

  8. @Transactional注解的失效场景

    @Transactional注解的失效场景 引言 @Transactional 注解相信大家并不陌生,平时开发中很常用的一个注解,它能保证方法内多个数据库操作要么同时成功.要么同时失败.使用@Tran ...

  9. Java注解Target、Retention、Inherited、Documented的作用简述,以@Transactional注解为例(处女座总结)

    原创博文,欢迎转载,转载时请务必附上博文链接,感谢您的尊重. 前言 通过本篇,你将学会@Target.@Retention.@Inherited.@Documented注解的含义,以及他们的使用场景, ...

  10. @Transactional注解事务不回滚不起作用无效

    @Transactional注解事务不回滚不起作用无效 以下内容均来自http://blog.csdn.net/u011410529/article/details/54287307 转载 这几天在项 ...

最新文章

  1. ad远程控制用户计算机,远程控制电脑|远程控制计算机|怎样远程控制电脑 - ManageEngine Remote Access Plus...
  2. POPUP_TO_CONFIRM_STEP
  3. python 读文件写数据库_python读文件写数据库
  4. Linux中 print用法,linux之find中的-print0和xargs中-0用法
  5. 太棒了!港大同济伯克利推出目标检测新范式:Sparse R-CNN
  6. python 嵌入式界面_运用Python和PyQT开发嵌入式ARM的界面
  7. 计算机毕业设计中基于python的快递查询系统
  8. [转载]备忘:oh my zsh 的安装、更新、删除
  9. Kubernetes Pod
  10. curl的安装与配置
  11. Java 导出word和pdf_Java实现word导出与pdf导出
  12. windows安装Pentaho Server
  13. asio Tcp服务退出时崩溃bug
  14. 做一个人脸识别相关的毕业设计
  15. MATLAB De_Pcode Mex 求助
  16. 使用MAC中碰到的各种问题
  17. 广度优先搜索、宽度优先搜索,《学点算法吧,Python》
  18. python发送notes邮件_使用python 驱动 lotus notes发送邮件 | 学步园
  19. 纽曼 移动硬盘 拆壳方法
  20. 在menuconfig中选择m和 y的区别

热门文章

  1. linux调度器(七)——other cfs class api and functions
  2. 数据中心201812-4
  3. python __import__和import区别_import reload __import__在python中的区别|python3教程|python入门|python教程...
  4. 3726.调整数组-AcWing题库
  5. 湖北省土壤有机质空间分布数据
  6. 面向对象12:==运算符和equals()方法、toString()方法
  7. spark 窗口函数(Window)实战详解
  8. NoSQL 数据库的使用场景
  9. android动画水波纹外扩,Android实现水波纹扩散效果
  10. python workflow_用 Python 写 Alfred3 workflow 插件,一个最小示例