Spring事务失效的9种场景

简介: Spring事务失效的9种场景

场景1

使用private、protect、static、final

场景2

rollbackfor未指定Exception

场景3

未使用spring注解,如@Service

场景4

数据库使用MyISAm,该数据库不支持事务,使用InnoDB

场景5

使用try...catch...了异常,未抛出异常

场景6

非事务方法调用了事务方法
解决办法
  1、分开到不同的类去写方法
  2、将@Transcation注解移到非事务方法上
  3、在userService中再次注入userService,使用userService去调用方法
  4、使用((UserService)AopContext.currentProxy()).insertUser(user);
原因
  由于@Transcational的实现原理是AOP,AOP的实现原理是动态代理,自己调用自己的过程,不存在代理对象的调用,这样不会产生AOP去为我们设置@Transcational配置的参数,所以出现了自己调用自己时注解失效的现象。

场景7

数据源没有配置事务管理器,导致事务失效

场景8

指定的事务传播方式不支持传播,Propagation.NOT_SUPPORTED

场景9

多线程调用,两个线程拿到的数据库链接是不同的,无法根据数据库的commit或rollback来对事务生效
相关文章
|
1月前
|
监控 Java 数据处理
【Spring云原生】Spring Batch:海量数据高并发任务处理!数据处理纵享新丝滑!事务管理机制+并行处理+实例应用讲解
【Spring云原生】Spring Batch:海量数据高并发任务处理!数据处理纵享新丝滑!事务管理机制+并行处理+实例应用讲解
|
1月前
|
Java 数据库 Spring
Spring事务失效的场景详解
Spring事务失效的场景详解
33 0
|
1月前
|
Java Spring 容器
Spring的AOP失效场景详解
Spring的AOP失效场景详解
108 0
|
1月前
|
Java 数据库 Spring
Spring事务的传播机制(行为、特性)
Spring事务的传播机制(行为、特性)
36 0
|
2月前
|
Java 关系型数据库 数据库连接
Spring源码解析--深入Spring事务原理
本文将带领大家领略Spring事务的风采,Spring事务是我们在日常开发中经常会遇到的,也是各种大小面试中的高频题,希望通过本文,能让大家对Spring事务有个深入的了解,无论开发还是面试,都不会让Spring事务成为拦路虎。
35 1
|
13天前
|
Java Shell 测试技术
一次配置,多场景适用:Spring Boot多套配置文件的深度剖析
一次配置,多场景适用:Spring Boot多套配置文件的深度剖析
29 0
一次配置,多场景适用:Spring Boot多套配置文件的深度剖析
|
1月前
|
XML Java 数据库
【二十四】springboot整合spring事务详解以及实战
【二十四】springboot整合spring事务详解以及实战
105 0
|
1月前
|
Java 数据库 开发者
|
6月前
|
Java Spring
【Spring事务的实现原理】
【Spring事务的实现原理】
|
2月前
|
Java 关系型数据库 MySQL
深入分析Spring事务和底层原理
深入分析Spring事务和底层原理
39 1