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

相关推荐
用户214118326360223 分钟前
Gemini 3 Pro 来了!一句话生成完整网站,AI编程能力断层领先
后端
q***72871 小时前
spring session、spring security和redis整合的简单使用
redis·spring·bootstrap
码事漫谈1 小时前
Linux开发到底指什么?是什么岗位?做什么的?
后端
u***j3241 小时前
后端服务限流实现,Redis+Lua脚本
java·redis·lua
码事漫谈1 小时前
Windows开发:一场与指针的共舞,亦是超越它的征程
后端
CoderYanger1 小时前
A.每日一题——2536. 子矩阵元素加 1
java·线性代数·算法·leetcode·矩阵
不可描述的两脚兽1 小时前
Redis 快记
java·数据库·redis
sanggou1 小时前
【Python爬虫】手把手教你从零开始写爬虫,小白也能轻松学会!(附完整源码)
开发语言·爬虫·python
普通网友1 小时前
C++与Qt图形开发
开发语言·c++·算法
f***45321 小时前
基于SpringBoot和PostGIS的各省与地级市空间距离分析
android·前端·后端