Spring事务失效的场景

1. 事务方法执行期间出现了异常,但是并未指定rollbackFor: Spring默认只会在遇到error和RunTimeException时才会回滚。

java 复制代码
public boolean rollbackon ( Throwable ex){
	return (ex instanceof RuntimeException || ex instanceof Error);
}

2. 事务方法执行期间出现了异常,但被方法本身捕获:使用catch进行捕获之后,Spring无法感知到异常,无法回滚。

3. 同一个类种方法互相调用:因为Spring事务的本质是动态代理,通过生成代理对象去调用方法,并且在方法前后增加事务效果;同一类中的方法调用时,无法使用代理对象调用,使用的是this调用,因此无法实现动态代理效果。

4. 方法不是public: Spring源码做了判断,如果不是Public会直接返回

java 复制代码
if (allowPublicMethodsonly() && !Modifier.isPublic(method.getNodifiers())){
	return null;
}

5. 方法是final或static:考虑动态代理的实现原理,无论是基于JDK还是CGLib,都不允许final和static的修饰。

相关推荐
Wang ruoxi8 小时前
Pygame 小游戏——数独
开发语言·python·pygame
折哥的程序人生 · 物流技术专研9 小时前
《Java 100 天进阶之路》第93篇:Redis实战应用:缓存策略与分布式锁(2026版)
java·redis·缓存·面试·架构·求职招聘
瓦特what?9 小时前
位运算核心技巧与应用
java·jvm·算法
人道领域9 小时前
【LeetCode刷题日记】90.子集Ⅱ--- 归纳题解
java·开发语言·leetcode
sandnes9 小时前
把ToolUse循环做到生产级-错误处理与可靠性五件套
后端
ch.ju9 小时前
Java Programming Chapter 4——Characteristics of inheritance
java·开发语言
复园电子9 小时前
企业PDF批量盖章开发集成指南:API对接OA/LIMS系统,高并发落地实战
开发语言·python·pdf
就叫_这个吧9 小时前
tomcat在idea控制台乱码问题解决
java·tomcat·intellij-idea
SunnyDays10119 小时前
如何使用 C# 自动调整 Excel 行高和列宽
开发语言·c#·excel
掘金者阿豪9 小时前
全维度拆解具身智能:底层技术 + 实战落地 + 全球产业竞争
后端