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

相关推荐
毕业设计7035 小时前
(免费领源码)SSM董家湾线上点餐系统04682- java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
java·redis·mysql·tomcat·maven·mybatis·ssm
yujunl6 小时前
重写了一个BOM查询的脚本
开发语言
Q26433650236 小时前
【有源码】基于SpringBoot+Vue的居民健康体检与慢病干预管理系统-面向智慧医疗的体检预约与健康知识服务平台
java·vue.js·spring boot·mysql·毕业设计·javaweb·课程设计
事圆则缓6 小时前
Kotlin 集合与序列:给页面一份清楚的数据
开发语言·windows·kotlin
事圆则缓6 小时前
Kotlin 异步与并发:从一次搜索请求走到状态流
android·开发语言·kotlin
黄鹂鸟科技6 小时前
进销存系统设计要点:从采购计划、库存监控到成本核算
后端·物联网·系统架构
从小白到软工6 小时前
4-3 项目-学生成绩管理系统(上)
c语言·开发语言·数据结构·经验分享·ai编程
撸串-研究生6 小时前
基于Spring Boot的智慧社区垃圾分类与回收系统的设计与实现【附源码】
spring boot·后端·分类·垃圾分类·社区管理
悠仁さん6 小时前
非类型模板参数的特化与偏特化
java·数据结构·算法