📚 分类
spring
🕵🏽‍♀️ 问题描述
spring事务失效的场景有哪些?
👨‍🏫 问题讲解
❒ 情况一: 异常捕获处理
✔ 事务通知只有捉到了目标抛出的异常,才能进行后续的回滚处理,如果目标自己处理掉异常,事务通知无法知悉。
✔ 在catch块添加throw new RuntimeException(e)抛出。

❒ 情况二: 抛出检查异常
✔ spring 默认只会回滚非检查异常。
✔ 配置rollbackFor属性@Transactional(rollbackFor=Exception.class)。

❒ 情况三: 非public方法导致的事务失效
✔ spring为方法创建代理、添加事务通知、前提条件都是该方法是public的。
🏳️‍🌈 问题总结
✔ 异常捕获处理,自己处理了异常,没有抛出,解决:手动抛出。
✔ 抛出检查异常,配置rolbackFor属性为Exception。
✔ 非public方法导致的事务失效,改为public。
📖 问题信息
📈 浏览次数:23 | 📅 更新时间:2025-12-04 04:09:48
📦 创建信息
🏷️ ID:45 | 📅 创建时间:2024-10-08 22:30:35