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

相关推荐
7***6843几秒前
Spring Boot 热部署
java·spring boot·后端
k***45992 分钟前
Spring Boot实时推送技术详解:三个经典案例
spring boot·后端·状态模式
毕设源码-邱学长3 分钟前
【开题答辩全过程】以 基于Java的公职备考在线学习系统的设计与实现为例,包含答辩的问题和答案
java·开发语言·学习
l***91479 分钟前
SpringCloud 整合 Dubbo
spring·spring cloud·dubbo
n***632721 分钟前
DeepSeek API 调用 - Spring Boot 实现
windows·spring boot·后端
Dolphin_Home26 分钟前
Spring 事务避坑笔记:从入门到解决自调用陷阱
数据库·笔记·spring
二川bro44 分钟前
模型部署实战:Python结合ONNX与TensorRT
开发语言·python
联系QQ:276998851 小时前
电化学与冷启动仿真的赝电容计算及GITT扩散系数研究——阻抗分析拟合与全电池电容器性能评估
开发语言
yaoxin5211231 小时前
为什么 IRIS SQL 会比 Spring JDBC 更快?
数据库·sql·spring
Croa-vo1 小时前
Tesla Spring 2026 Co-op 面经:CodeSignal真题解析与通关攻略
java·后端·spring