SpringBoot 事务失效常见的原因

low一点的原因:

1. 非public方法

2. 异常被处理了(try catch)

3. bean没被Spring管理,比如没加Component注解

4. 数据库不支持(比如MyISAM)

 

高大上一点的原因:

5. 内部方法调用,可以注入本实例的代理类,通过代理类来调用

6. 抛出的是非RuntimeException,可以这么解决(@Transactional(rollbackFor = TimeoutException.class))

 

 

另外,事务方法内进行异步操作(开启线程执行代码)很可能会出问题,如果事务隔离级别、传播行为、提交时机设置不当,就很容易出问题,应该尽量避免。

 

另外,事务传播行为常用的一般就两种:

融入:当前线程已经有事务了,就加入,没有,则新建,连接信息和事务信息是存在ThreadLocal里面的

新建:挂起当前的事务(存在ThreadLocal),新建新的事务,等提交以后,再把老的事务信息拿出来

posted @   坏男银  阅读(589)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示