spring boot事务(springboot事务效率问题)

2026-07-24 20:00:01 :0

spring boot事务(springboot事务效率问题)

今天给各位分享springboot事务效率问题的知识,其中也会对springboot事务效率问题进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录

springboot事务效率问题

Spring通过AOP进行事务的控制,如果操作数据库报异常,则会进行回滚;如果没有报异常则会提交事务。但是,有时候Spring事务会失效,本文将介绍Spring的事务何时会失效,以及如何避免事务失效。
情景1:

springboot 手动开启事务以及手动提交事务

添加依赖,sprongboot 会默认开启事务管理

org.springframework.boot
spring-boot-starter-jdbc

在需要的服务类里添加注解

springboot在weblogic中的事务失效问题

记录下最近项目中遇到的坑,关于事务的问题,我们的项目使用springboot构建,并且我们的连接池使用的是druid,在本地直接使用springboot打好jar包,
一切正常行,然后将项目打包成war包,上到weblogic中,运行也正常,但是一次导入excel表的case中,导入失败了,但是数据没有回滚!经过测试才发现在weblogic中springboot管理的事务失效了,马上查询资料,经过几小时的谷歌后找到了解决办法,在weblogic中放弃自己的连接池,转而使用weblogic中的jndi数据源。
配置步骤如下:

spring事务失效的几种场景以及原因

spring事务失效场景可能大家在很多文章都看过了,所以今天就水一篇,看大家能不能收获一些不一样的东西。直接进入主题

失效原因: spring事务生效的前提是,service必须是一个bean对象
解决方案: 将service注入spring

失效原因: spring默认只会回滚非检查异常和error异常
解决方案: 配置rollbackFor

失效原因: spring事务只有捕捉到了业务抛出去的异常,才能进行后续的处理,如果业务自己捕获了异常,则事务无法感知
解决方案:
1、将异常原样抛出;
2、设置TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

失效原因: spring事务切面的优先级顺序最低,但如果自定义的切面优先级和他一样,且自定义的切面没有正确处理异常,则会同业务自己捕获异常的那种场景一样
解决方案:
1、在切面中将异常原样抛出;
2、在切面中设置TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

失效原因: spring事务默认生效的方法权限都必须为public

解决方案:
1、将方法改为public;
2、修改TansactionAttributeSource,将publicMethodsOnly改为false【这个从源码跟踪得出结论】
3、开启 AspectJ 代理模式【从spring文档得出结论】

具体步骤:

1、在pom引入aspectjrt坐标以及相应插件

2、在启动类上加上如下配置

注: 如果是在idea上运行,则需做如下配置


4、直接用TransactionTemplate

示例:

失效原因: 子容器扫描范围过大,将未加事务配置的serivce扫描进来

解决方案:
1、父子容器个扫个的范围;
2、不用父子容器,所有bean都交给同一容器管理

注: 因为示例是使用springboot,而springboot启动默认没有父子容器,只有一个容器,因此就该场景就演示示例了

失效原因: 因为spring事务是用动态代理实现,因此如果方法使用了final修饰,则代理类无法对目标方法进行重写,植入事务功能

解决方案:
1、方法不要用final修饰

失效原因: 原因和final一样

解决方案:
1、方法不要用static修饰

失效原因: 本类方法不经过代理,无法进行增强

解决方案:
1、注入自己来调用;
2、使用@EnableAspectJAutoProxy(exposeProxy = true) + AopContext.currentProxy()

失效原因: 因为spring的事务是通过数据库连接来实现,而数据库连接spring是放在threadLocal里面。同一个事务,只能用同一个数据库连接。而多线程场景下,拿到的数据库连接是不一样的,即是属于不同事务

失效原因: 使用的传播特性不支持事务

失效原因: 使用了不支持事务的存储引擎。比如mysql中的MyISAM

注: 因为springboot,他默认已经开启事务管理器。org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration。因此示例略过

失效原因: 当代理类的实例化早于AbstractAutoProxyCreator后置处理器,就无法被AbstractAutoProxyCreator后置处理器增强

本文列举了14种spring事务失效的场景,其实这14种里面有很多都是归根结底都是属于同一类问题引起,比如因为动态代理原因、方法限定符原因、异常类型原因等

***隐藏网址***

springboot事务效率问题的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于springboot事务效率问题、springboot事务效率问题的信息别忘了在本站进行查找哦。

spring boot事务(springboot事务效率问题)

本文编辑:admin

更多文章:


slze表示什么意思(slze是什么品牌)

slze表示什么意思(slze是什么品牌)

各位老铁们,大家好,今天由我来为大家分享slze表示什么意思,以及slze是什么品牌的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录slze是什么品

2025年11月9日 02:30

计算机网络协议指的是tcp ip协议(TCP/IP协议是什么)

计算机网络协议指的是tcp ip协议(TCP/IP协议是什么)

大家好,关于计算机网络协议指的是tcp ip协议很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于TCP/IP协议是什么的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所

2025年10月21日 07:15

oracle数据库备份文件后缀(ORACLE 数据库导出的数据文件 什么后缀)

oracle数据库备份文件后缀(ORACLE 数据库导出的数据文件 什么后缀)

大家好,oracle数据库备份文件后缀相信很多的网友都不是很明白,包括ORACLE 数据库导出的数据文件 什么后缀也是一样,不过没有关系,接下来就来为大家分享关于oracle数据库备份文件后缀和ORACLE 数据库导出的数据文件 什么后缀的

2026年4月7日 10:45

imgur怎么存图(苹果手机的实况图上传哪里可以不变)

imgur怎么存图(苹果手机的实况图上传哪里可以不变)

大家好,关于imgur怎么存图很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于苹果手机的实况图上传哪里可以不变的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本

2025年9月17日 02:45

C语言中换行符和回车符的区别?C语言中怎么实现自动换行

C语言中换行符和回车符的区别?C语言中怎么实现自动换行

大家好,关于c语言换行很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于C语言中换行符和回车符的区别的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录C语言

2025年9月23日 17:30

js插件安装(如何在zendstudio中安装js插件)

js插件安装(如何在zendstudio中安装js插件)

“js插件安装”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看js插件安装(如何在zendstudio中安装js插件)!本文目录如何在zendstudio中安装js插件怎么在eclipse中安装js插件怎么安装jseclip

2025年6月11日 03:45

新加坡marina square风景(新加坡Marina Bay Sands空中花园设计欣赏)

新加坡marina square风景(新加坡Marina Bay Sands空中花园设计欣赏)

“新加坡marina square风景”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看新加坡marina square风景(新加坡Marina Bay Sands空中花园设计欣赏)!本文目录新加坡Marina Bay San

2026年4月3日 10:45

datagridview设置表头(Datagridview表头样式设置)

datagridview设置表头(Datagridview表头样式设置)

大家好,今天小编来为大家解答以下的问题,关于datagridview设置表头,Datagridview表头样式设置这个很多人还不知道,现在让我们一起来看看吧!本文目录Datagridview表头样式设置datagridview控件怎么重写单

2026年9月3日 13:45

易语言下载文件到内存(如何让易语言 下载文件)

易语言下载文件到内存(如何让易语言 下载文件)

大家好,今天小编来为大家解答以下的问题,关于易语言下载文件到内存,如何让易语言 下载文件这个很多人还不知道,现在让我们一起来看看吧!本文目录如何让易语言 下载文件易语言如何下载文件如何让易语言 下载文件.版本 2.支持库 internet.

2026年4月27日 03:00

企业域名和个人域名有什么区别?公司域名是什么意思

企业域名和个人域名有什么区别?公司域名是什么意思

大家好,企业域名相信很多的网友都不是很明白,包括企业域名和个人域名有什么区别也是一样,不过没有关系,接下来就来为大家分享关于企业域名和企业域名和个人域名有什么区别的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本文目录企

2026年9月11日 12:00

mysql workbench查看表结构(在使用mysqlworkbench6.3怎么查看mysql数据库的关系图)

mysql workbench查看表结构(在使用mysqlworkbench6.3怎么查看mysql数据库的关系图)

各位老铁们,大家好,今天由我来为大家分享mysql workbench查看表结构,以及在使用mysqlworkbench6.3怎么查看mysql数据库的关系图的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支

2025年7月31日 04:30

curl访问地址(php curl访问本地测试地址 链接超时,什么原因.公网可以)

curl访问地址(php curl访问本地测试地址 链接超时,什么原因.公网可以)

“curl访问地址”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看curl访问地址(php curl访问本地测试地址 链接超时,什么原因.公网可以)!本文目录php curl访问本地测试地址 链接超时,什么原因.公网可以哪位

2026年2月15日 19:15

英语中的key复数?怎么查看apk的签名 keystore

英语中的key复数?怎么查看apk的签名 keystore

本篇文章给大家谈谈keys,以及英语中的key复数对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录英语中的key复数怎么查看apk的签名 keystorepress arrow keys or a and d keys to

2025年8月1日 19:30

object后面接什么(高中英语 object 意思为“拒绝“时的用法 后面跟什么)

object后面接什么(高中英语 object 意思为“拒绝“时的用法 后面跟什么)

大家好,今天小编来为大家解答以下的问题,关于object后面接什么,高中英语 object 意思为“拒绝“时的用法 后面跟什么这个很多人还不知道,现在让我们一起来看看吧!本文目录高中英语 object 意思为“拒绝“时的用法 后面跟什么ob

2026年6月30日 19:00

win10系统java环境变量设置(win10怎么配置java环境变量path)

win10系统java环境变量设置(win10怎么配置java环境变量path)

各位老铁们,大家好,今天由我来为大家分享win10系统java环境变量设置,以及win10怎么配置java环境变量path的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下

2025年6月16日 13:45

r语言实验敲代码基础(怎么样学习R语言)

r语言实验敲代码基础(怎么样学习R语言)

大家好,如果您还对r语言实验敲代码基础不太了解,没有关系,今天就由本站为大家分享r语言实验敲代码基础的知识,包括怎么样学习R语言的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录怎么样学习R语言R语言中 敲代码时右上

2026年4月5日 16:00

达内教育慕课网(软件测试学习网站那个好谢谢各位!)

达内教育慕课网(软件测试学习网站那个好谢谢各位!)

本篇文章给大家谈谈达内教育慕课网,以及软件测试学习网站那个好谢谢各位!对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录软件测试学习网站那个好

2026年4月29日 02:45

维控plc编程软件(亿维120plc用什么编程软件)

维控plc编程软件(亿维120plc用什么编程软件)

这篇文章给大家聊聊关于维控plc编程软件,以及亿维120plc用什么编程软件对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录亿维120plc用什么编程软件400plc如何修改传输速率维控PLC编程软件如何添加指令亿维120pl

2026年1月23日 17:00

jquerytrigger参数(怎么给jquery方法传值 就是点击第2个button后执行第一个button的方式 怎么给s传值)

jquerytrigger参数(怎么给jquery方法传值 就是点击第2个button后执行第一个button的方式 怎么给s传值)

其实jquerytrigger参数的问题并不复杂,但是又很多的朋友都不太了解怎么给jquery方法传值 就是点击第2个button后执行第一个button的方式 怎么给s传值,因此呢,今天小编就来为大家分享jquerytrigger参数的一

2025年11月5日 00:15

selective tool教程(selective tool能卸载吗)

selective tool教程(selective tool能卸载吗)

大家好,关于selective tool教程很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于selective tool能卸载吗的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望

2025年5月30日 06:30

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索