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 @Transactional的rollbackFor属性的更多相关文章
- 事务@Transactional注解的属性
事务的传播行为 当事务方法被另一个事务方法调用时,必须指定事务应该如何传播.例如:方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己的事务中运行.事务的传播行为可以由传播属性指定.Sprin ...
- @Transactional注解真的有必要声明rollbackFor属性吗?
@Transactional注解真的有必要声明rollbackFor属性吗? 今天在看spring的事务底层源码时,想到一个问题,@Transactional注解真的有必要声明rollbackFo ...
- SpringBoot之Spring@Value属性注入使用详解
在使用Spring框架的项目中,@Value是使用比较频繁的注解之一,它的作用是将配置文件中key对应的值赋值给它标注的属性.在日常使用中我们常用的功能都比较简单,本篇文章系统的带大家来了解一下@Va ...
- Springboot项目 配置数据库连接属性后,启动项目报错
Springboot项目 配置数据库连接属性后,启动项目报错,错误如下: 错误原因分析: 1.连接信息配置错误 当使用properties为配置文件时,如图所示,上面的 spring.datasour ...
- Springboot @Transactional 事务不回滚
一.异常捕获的原因 这里Exception异常,他又分为运行时异常RuntimeException和非运行时异常 可查的异常(checked exceptions):Exception下除了Runti ...
- 解决 SpringBoot 没有主清单属性
问题:SpringBoot打包成jar后运行提示没有主清单属性 解决:补全maven中的bulid信息 <plugin> <groupId>org.springframewor ...
- SpringBoot01 InteliJ IDEA安装、Maven配置、创建SpringBoot项目、yml属性配置、多环境配置、自定义properties配置
1 IntelliJ IDEA 安装 下载地址:点击前往 注意:需要下载专业版本的,注册码在网上随便搜一个就行啦 2 MAVEN工具的安装 2.1 获取安装包 下载地址:点击前往 2.2 安装过程 到 ...
- SpringBoot常用应用程序属性
参考地址: https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.h ...
- 2.SpringBoot的properties的属性配置详解
SpringBoot是为了简化Spring应用的创建.运行.调试.部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以 ...
随机推荐
- Django项目:CRM(客户关系管理系统)--31--23PerfectCRM实现King_admin数据删除
登陆密码设置参考 http://www.cnblogs.com/ujq3/p/8553784.html # king_urls.py # ————————02PerfectCRM创建ADMIN页面—— ...
- JavaScript多继承(转载)
js里是否有多继承,如何实现多继承.在这里可以看看java是如何处理多继承的问题,java里是没有多继承的,即一个子类不能同时继承多个父类,但可以实现多个接口,这也间接的实现了多继承.主要是因为多继承 ...
- IE9没有内置鼠标手势,还要自己写
写了个IE插件,然后获取鼠标,信息, 模拟了鼠标手势,在虚拟机里面测试,完全好使,但是现在又不敢在Win7上用了. 愁死了... 为了实现一个鼠标手势. 写的那破玩意,竟然50多K.....太大了.. ...
- POJ1182 NOI2001 食物链
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 77428 Accepted: 23067 Description ...
- Leetcode599.Minimum Index Sum of Two Lists
假设Andy和Doris想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示. 你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅. 如果答案不止一个,则输出所有答 ...
- Django用户登陆以及跳转后台管理页面3
Django用户登陆以及跳转后台管理页面1http://www.cnblogs.com/ujq3/p/7891774.html Django用户登陆以及跳转后台管理页面2http://www.cnbl ...
- python 正则的使用例子和goupby
111122333类似这字符串的分类 Solution 1 ... using a regular expression def countAndSay(self, n): s = ' for _ i ...
- ACdream 1099求第k大
题目链接 瑶瑶的第K大 Time Limit: 10000/5000MS (Java/Others)Memory Limit: 512000/256000KB (Java/Others) Submit ...
- 利用Microsoft.VisualBasic中TextFieldParser解析器把CSV格式倒入数据库
阅读目录 利用ODBC去操作 利用TextFieldParser操作 写了个Demo,利用Microsoft.VisualBasic这个程序集中的TextFieldParser解析器解析CSV格式的文 ...
- 开源PaaS平台:Cloudify
Cloudify是gigaspaces公司推出的基于java的paas平台. refer to :http://timeson.iteye.com/blog/1699730