SpringBoot 事务失效常见的原因
low一点的原因:
1. 非public方法
2. 异常被处理了(try catch)
3. bean没被Spring管理,比如没加Component注解
4. 数据库不支持(比如MyISAM)
高大上一点的原因:
5. 内部方法调用,可以注入本实例的代理类,通过代理类来调用
6. 抛出的是非RuntimeException,可以这么解决(@Transactional(rollbackFor = TimeoutException.class))
另外,事务方法内进行异步操作(开启线程执行代码)很可能会出问题,如果事务隔离级别、传播行为、提交时机设置不当,就很容易出问题,应该尽量避免。
另外,事务传播行为常用的一般就两种:
融入:当前线程已经有事务了,就加入,没有,则新建,连接信息和事务信息是存在ThreadLocal里面的
新建:挂起当前的事务(存在ThreadLocal),新建新的事务,等提交以后,再把老的事务信息拿出来
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!