从doSetRollbackOnly(status)这个单词就知道 , required的时候 , 已经把这个事务设置成RollbackOnly , 因此 , 虽然try住了 , 但是Example2执行完提交的时候 , 却发现无法提交 , 所以异常信息如下:
Transaction rolled back because it has been marked as rollback-only
一图胜千言 , 我用一张图来描述这个关系
文章插图
那为啥案例三 , 又能插入数据呢?还是用一张图来描述
文章插图
需要注意@Transactional有很多注意点
- 在同个类中调用A方法调用B方法 , B方法是不会开启事务 , 自然也就不会用到事务的传播机制 。这个原理后续肥朝会解析 , 当然如果你连这句话都不知道是什么意思 , 假粉实锤了!
- @Transactional默认情况下 , 只回滚RuntimeException 。如果你抛出的异常不是RuntimeException , 可能导致在默认情况下和本文有所偏差
推荐阅读
- JAVA技术总监:技术团队管理的6大坑
- 程序员最常见的谎话
- 36岁互联网开发大叔感慨:今年Java面试,技术要求都这么高?
- 现在程序员进行数据分析都在用Excel?Python才是时代的趋势
- 华为鸿蒙应用开发的JavaScript UI设计概述
- 七个最有用的JavaScript技巧
- CDN与缓存全面详聊,看完之后,大部分程序员收藏了
- 网络爬虫 JAVA网络编程模拟浏览器获取html源代码
- Java实现基于token认证
- 什么是真正的架构设计?十年Java经验让我总结出了这些