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的修饰。

相关推荐
JavaGuide11 分钟前
DeepSeek Harness 重磅更新,Codex、Claude Code 子智能体进官方插件列表了,还有 Git 工作树和思考翻译!
前端·后端
thefool11226614 分钟前
多线程 4
java
wewowilling19 分钟前
AI大模型开发--01Python基础(无废话)
开发语言·python·函数
小羊没烦恼!27 分钟前
OS X 上使用.NET开发应用程序
开发语言·前端·数据库·人工智能·c#·策略模式
棉猴29 分钟前
玩游戏学Python5-函数
开发语言·python·函数·玩游戏·游戏编程
Rain的Java大神之路30 分钟前
[特殊字符]8年Java老兵转型AI Agent:90%的人挂在同一个坑,根本不用学Python!(万字实战复盘,建议收藏)
java·数据库·人工智能·后端·python·spring·ai编程
高频因子挖掘机1 小时前
A股分钟K线数据占内存:先缩小请求范围,还是换 DataFrame 工具?
后端·github·api
高级程序源1 小时前
springboot大学生体测系统72170-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·django·课程设计
谢亮_vipxieliang1 小时前
JavaScript this 指向完全指南:调用位置决定一切
开发语言·javascript·ecmascript
IT研究室1 小时前
最新计算机毕业设计选题推荐-基于spring boot的文学名著分享系统-网站-文档指导-Java-springboot
java·spring boot·课程设计