SpringBoot @Transactional的rollbackFor属性
1.简单回顾Java Exception
该图摘自:https://blog.csdn.net/zhangerqing/article/details/8248186
一方面,我们可以将异常分为运行时异常(RuntimeException)和非运行时异常(Exception中除了RuntimeException及其子类以外的)。另一方面,我们可以将异常分为受控异常(checked exceptions)和不受控异常(unchecked exceptions)。
受控异常(checked exceptions):就是非运行时异常,即Exception中除了RuntimeException及其子类以外的。
不受控异常(unchecked exceptions):RuntimeException和Error。
2.、rollbackFor属性介绍
作者开发时遇到两个疑问:1.已注解了@Transactional的事务仍会有“出现异常事务不回滚”的情况?例如mybatis的xml配置<selectKey>标签错误时,运行报异常,但仍然能够进行增加操作。2.Java阿里巴巴规范提示,事务需要进行手动回滚。为什么?
因此,经作者百度后,得知如下原因:
Spring框架的事务管理默认地只在发生不受控异常(RuntimeException和Error)时才进行事务回滚。也就是说,当事务方法抛出受控异常(Exception中除了RuntimeException及其子类以外的)时不会进行事务回滚。
rollbackFor属性在这里就可以发挥它的作用了!
在类或方法前注解配置@Transactional(rollbackFor=Exception.class)就可以实现:
当发生受控异常(checked exceptions)时,事务也进行回滚。
“rollbackFor”相关知识摘自:https://blog.csdn.net/qq_16605855/article/details/79653282
相关文章
- SpringBoot中maven打包,启动报没有主清单属性
- springboot属性类自动加载配置文件中的值
- [代码讲解教程+源码等]springboot办公管理系统
- 【Java 问题 & 解决方法 · SpringBoot & Jackson】Enum类型 转JSON无法获取内部属性
- springboot快速入门(二)——项目属性配置(日志详解)
- springboot读取系统级环境变量,和读写系统属性以及unittest来获取环境变量的方法
- SpringBoot定时任务(schedule、quartz)
- SpringBoot 教程之 banner 定制
- 使用idea创建一个springboot项目,本文不包含ORM部分This application has no explicit mapping for /error, so you are seeing this as a fallback.
- [Web Server]Tomcat调优之SpringBoot内嵌Tomcat源码分析
- SpringBoot配置属性之DataSource
- SpringBoot 使用 @Value 从 YAML文件读取属性
- 如何获取SpringBoot项目的applicationContext对象
- springboot
- Springboot 操作Cookie
- springboot 配置mybatis打印sql
- 【毕业设计】 基于Springboot的测试项目管理平台(论文+源码)
- 编写一个可复用的SpringBoot应用运维脚本
- springboot,mybatis,spring5相关pom依赖导入
- SpringBoot的创建和使用
- 2-2. SpringBoot API开发详解 --SpringMVC注解+封装结果+支持跨域+打包
- 【SpringBoot系列】七、SpringBoot 中使用Redis缓存