SpringBoot@Transactional的rollbackFor属性
1.简单回顾Java Exception
⼀⽅⾯,我们可以将异常分为运⾏时异常(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 roll怎么读Spring框架的事务管理默认地只在发⽣不受控异常(RuntimeException和Error)时才进⾏事务回滚。也就是说,当事务⽅法抛出受控异常(Exception中除了RuntimeException及其⼦类以外的)时不会进⾏事务回滚。
rollbackFor属性在这⾥就可以发挥它的作⽤了!
在类或⽅法前注解配置@Transactional(rollbackFor=Exception.class)就可以实现:
当发⽣受控异常(checked exceptions)时,事务也进⾏回滚。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论