Spring 管理实务不能回滚问题!终于找到原因!大意了……

情况:

  1. spring配置文件中已经配置好事务,配置代码此处就不贴了。
  2. service实现类中代码:
    public void insert(AdsiteBO record) {
            try{
            	adsiteDAO.insert(record);
                    adsiteDAO.update(record);//此处调用异常
            }
            catch(Exception e){
                ExceptionUtils.getFullStackTrace(e);
            }
        }
    正常情况下上述代码不会插入数据,但是我这数据被插入到数据库了。

原因及解决办法:

  1. 这里抛出的异常被try、catch语句块捕获了,造成异常没有被抛出,所以spring管理事务失败。
  2. 此处我测试在catch语句块中随便抛出了个异常,结果成功了。代码如下:
    public void insert(AdsiteBO record) {
            try{
            	adsiteDAO.insert(record);
            	adsiteDAO.update(record);//此处调用异常
            }
            catch(Exception e){
                ExceptionUtils.getFullStackTrace(e);
                System.out.println("抛异常了……");
                throw new UnsupportedOperationException();
            }
        }
     spring事务回滚了。
  3. 其实不用如此麻烦的,直接抛出异常就可以了。
    public void insert(AdsiteBO record) throws Exception{
              ……
    }
     
Spring事务管理方法内调用回滚问题解决方案 Spring事务管理支持七种传播行为,每种行为适用于不同的业务场景。以下是Spring支持的七种传播行为及其简要说明:传播行为说明如果当前存在事务,则加入该事务;否则新建一个事务(默认行为)如果当前存在事务,则加入该事务;否则以非事务方式执行必须在事务上下文中执行,否则抛出异常每次调用都开启新事务,挂起当前事务(如果存在)不在事务中执行,挂起当前事务不能在事务中执行,否则抛出异常在嵌套事务中执行,具有独立的提交/回滚能力通过注解的。 阅读详情

相关推荐

spring_如何管理事务的

此文档介绍spring如何管理实务,简单易懂。

Spring事务回滚 执行多个sql语句 有一个错误 其他回滚

工作中因为事务回滚的问题,搞了一下午,Spring的各种方式都尝试了都不起作用,最后发现是我最初配置事务的AOP扫描路径错了(最初使用的是在xml中配置事务,使用AOP切面方式实现事务回滚的) Spring的三种事务回滚方式 1.@Transactional注解 @Transactional(rollbackFor = Exception.class) @Override public int insertTest(Test test) { //SQL执行逻辑 insert1(); insert2();//

weixin_41224131的博客 6187

Java Spring 事务回滚详解

spring 事务回滚 1、遇到的问题   当我们一个方法里面有多个数据库保存操作的时候,中间的数据库操作发生的错误。伪代码如下: public method() { Dao1.save(Person1); Dao1.save(Person2); Dao1.save(Person2);//假如这句发生了错误,前面的两个对象会被保存到数据库中 Dao1.save(Person2); }   期待的情况:发生错误之前的所有数据库保存操作都回滚,即不保存   正常情况:前面的数据库操作会被执行,而发生数据库操作错误开始及之后的所有的数据保存操作都将失败。这样子应该都不是我们要的

spring @Transactional 事务不回滚的其中一个原因

1、当出现以下代码情况时会出现@Transactional 无效,事务无法回滚,原因是当异常抛出后被function1方法捕获了,无法抛出异常。导致spring 事务无法捕获到异常。导致无法回滚。

张少飞的优快云 2237

Figma汉化教程

Figma汉化教程

cc蒲公英的博客 1万+

基于多智能体架构的AI自动化渗透测试平台PentAGI部署与实战

自动化渗透测试是网络安全领域提升效率、应对复杂威胁的关键技术。其核心原理在于通过程序化脚本或智能系统模拟攻击者行为,对目标系统进行安全评估。该技术能显著降低人工重复劳动,实现7x24小时持续监控与测试,其价值在于将安全专家从繁琐的扫描、信息收集中解放出来,专注于高级威胁分析与策略制定。在实际应用中,自动化渗透测试广泛应用于企业安全自评估、红蓝对抗演练及DevSecOps流程。本文聚焦于一个名为PentAGI的先进平台,它采用多智能体(Multi-Agent)系统架构,集成了知识图谱和向量数据库,实现了从侦察

weixin_30294295的博客 611

spring事务处理:如果一个事务中有两个SQL,一个成功,另一个失败但被Try catch住了,这时会有什么问题...

try { con.setAutoCommit(false); //这句让正常执行 con.createStatement().execute("insert into sys_admin values(12,'zhangs','zhangs')"); //这句由于表不存在,所以会报异常 con.createStatement().execute("insert into sy...

JAVA_EE技术探讨 2598

一致性总线CMN600AE-ARM系列

主要介绍一致性总线CMN600AE,根据arm官网的spec来概述其模块。提示:以下是本篇文章正文内容,下面案例可供参考CMN600ae是基于Mesh拓扑结构,对外支持AMBA CHI/ACE-LITE等接口,内部改用路由结构转发数据,并提供硬件一致性和系统缓存,还支持多芯片互联。CMN600在T16FFC上可以做到2Ghz,另外AE版本增加了车轨芯片的安全功能,总线内部采用EDC检查,接口采用的奇校验。

tujiuguo3994的博客 6297

Spring——Spring事务原理与实战

Spring为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式两种。编程式事务指的是通过编码方式实现事务;声明式事务基于 AOP,将具体的逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污染,因此实际使用中声明式事务用的比较多。声明式事务有两种方式,一种是在配置文件(XML)中做相关的事务规则声明,另一种是基于 @Transactional 注解的方式,本文详细介绍Spring的声明式事务。

庄小焱 2563

小白的MatSWMM使用心路(二)——用matlab修改INP文件参数/使用matlab查找txt内容并修改多行内容

说是修改inp,但是里面的内容大部分还是讲怎么修改txt的……(?)。包含如何找到需要的参数(关键字)位置,以及修改那个位置的txt这样的内容。希望能帮助大家吧……Matlab你要多出好用的功能啊!

weixin_44276743的博客 4530

GMSL2摄像头接入避坑指南:从FMC子卡配置到V4L2调用的完整流程(附Ubuntu20.04实测)

本文详细解析了GMSL2摄像头接入的全流程,从FMC子卡配置到V4L2调用的完整指南。基于XC7Z100平台实测经验,提供了硬件选型、带宽优化、Linux驱动配置及高分辨率采集的实战技巧,帮助开发者规避常见问题,提升系统稳定性与性能。

weixin_33737774的博客 419

Spring控制事务回滚

调用本类方法导致传播行为失效,同一个 Service 的两个方法之间调用,就会出现这个问题,原因还是在代理对象这里,我们期待的调用是一个代理类的调用,但是我们若是直接在方法中内部调用,不好意思,被调用的方法的事务失效,没有被 AOP 增强。当添加了注解或者全局事务配置了路径,但是需要用到事务的方法所在的类没有注入到Spring容器中,这样事务也不会生效,通常我们都是添加到业务逻辑处理层,通常都是添加。:在业务代码中,需要对异常单独进行处理,异常不会抛出,但需要事务回滚的情况,这个时候就需要手动调用回滚。

BadBoyxiaolin的博客 6475

【35】软考软件设计师——设计模式代码填空(C++版)满分精讲|第5/6题二选一必考

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第35篇,聚焦下午选做题**第5/6题C++版设计模式代码填空**,与上一篇Java版形成双子配套,单题分值稳定12~15分。全文超4000字深度拆解C++独有核心考点:虚函数/纯虚函数、构造与析构函数规范、继承权限、模板类编程在设计模式中的应用;精讲单例、工厂、策略、观察者、适配器五大高频模式的C++专属代码写法,标注所有填空核心点位、语法陷阱、内存安全规范

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 544

架构师不得不知的Spring事务不能回滚的深层次原因

author: rocklei123 tags: Java Spring Spring Transaction categories: Spring date: 2018-09-18 17:19:20 1.目标 本文汇总了常见Spring事务无法回滚的问题,并配合实际案例模拟,并给出解决方案。通过本文可以更加详细的了解Spring事务无法回滚的原因。 希望大家手动敲一遍代码,会收获颇丰。...

水滴石穿 8808

5.1 直流无刷电机(BLDC):基本控制概念

本文系统介绍了直流无刷电机(BLDC)控制系统的核心概念与技术。主要内容包括:控制系统的分层结构设计,开环与闭环控制的原理及特点,PWM调速技术及其调制方式,PID控制算法及其数字化实现方法,以及控制系统的性能评估指标。同时探讨了现代BLDC控制器硬件实现方案,并介绍了磁场定向控制(FOC)、直接转矩控制(DTC)等先进控制策略。文章全面阐述了BLDC电机控制从基本原理到前沿技术的知识体系,为相关应用提供了理论指导和技术参考。

技术工作者 491

点云从入门到精通技术详解100篇-基于三维点云的机器人抓取位姿检测(续)

集到的深度信息会存在噪点,因此需要将生成的场景点云进行预处理,获得平滑、降采样处理场景点云,本文设计的预处理操作更能从冗杂的场景点云中提取清晰、平滑的目标点云,便于后续的抓取位姿采样,提高后续算法的处理效率。因此需要对场景点云进行适当的分割,仅保留目标物体的点云,整个过程可以通过。场较小时,空间中的点云密度会更加提高;觉子系统的效率,再保持全局点云几何形状不改变的前提下,通过对目标点云进行。体素降采样可以快速地减少点云数据并同时保持点云的形。个点,由于我们实施抓取的目标物体只占整个场景点云图的一部分,

getusushu的博客 774

spring事务配置不回滚&回滚异常问题

spring事务配置不回滚 spring事务管理配置,一般来说都是可以回滚的,最近在开发的过程中遇到了一个异常不回滚的问题,最终找到了原因,贴出来一下 1、首先这里定义一个接口 在接口中定义几个方法 2、然后实现这个接口 在实现的接口方法中,引用一个只在实现类中定义的方法,并添加了事务管理注解。 3、这里声明了dubbo服务,便于远程调用 当这个doTransfer的方法中发生异常时,并没...

莫然的博客 2778

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Spring事务管理中异常回滚知识点总结

讨论Spring哪些场景下事务失效不回滚,讨论try cache对事务的影响,总结了Spring事务相关的知识点

gzt19881123的专栏 4426

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Spring配置事务 service 异常捕获回滚问题

1.首先来看一Spring配置事务的传播种类: Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播:   PROPAGATION_REQUIRED   如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。   PROPAGATION_SUPPOR

gloryzyf 8113

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Spring事务回滚失败的原因

Spring事务回滚失败的原因 Spring事务管理机制的实现原理-动态代理 在spring中实现动态代理就两种方式,一是使用JDK实现InvocationHandler接口,二是使用CGlib实现MethodInterceptor接口 这里简单说一下两者的区别: 1.代理的对象要求不同: JDK是通过代理类实现了的接口去控制类的,换句话说JDK是代理接口的 CGlib适用范围更广,能代理没有通过接口定义业务方法的类,即直接代理类的 2.两者实现的技术不同: JDK采用反射机制调用委托代理类方法 CGli

sclieshare的博客 1047

Spring事务不能回滚的深层次原因

非PROPAGATION_NESTED的标注的嵌套事务不使用动态代理的方式来调用会导致子方法里的事务失效

数据与算法架构提升之路专栏 1443

JAVA Spring 事务管理事务不回滚问题

Spring事务管理事务不回滚 dao层: @Repository public class UserDaoImpl implements UserDao { @Autowired private JdbcTemplate jdbcTemplate; @Override public void inmoney(String name, Integer money) { String s...

桃李醉春风 10万+

Spring Boot 各种事务操作实战(自动回滚、手动回滚、部分回滚)

事务,就是一组操作数据库的动作集合。事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交。由于其中的一部分或多步执行失败,导致没有步骤被提交,则事务必须回滚到最初的系统状态。

m0_74824534的博客 1554

spring事务如何回滚

Spring 提供了强大的事务回滚机制,通过注解和配置,开发者可以轻松实现复杂的事务控制。Spring 提供了对事务的统一管理,支持多种事务管理器(如 JDBC、JPA、Hibernate 等)。事务回滚依赖异常的传播,如果异常被捕获而未抛出,Spring 无法感知事务需要回滚。Spring 事务依赖 AOP 实现,如果同一个类中自调用事务方法,事务可能失效。Spring 支持多种事务传播行为,不同传播方式下事务的回滚机制也不同。时,事务回滚可能不会触发,因为只读事务通常用于查询操作。

Flying_Fish_roe的博客 1742

关于Spring事务回滚的问题

在Spring的配置文件中,如果数据源的defaultAutoCommit设置为True了,那么方法中如果自己捕获了异常,事务是不会回滚的,如果没有自己捕获异常则事务会回滚,如下例 比如配置文件里有这么条记录: [html] view plaincopyprint? bean id="dataSource" class="xxx">     property name

guobing965816的专栏 3555

Spring事务回滚问题

原创连接:https://blog.youkuaiyun.com/qq_32331073/article/details/76508147 前几天在开发中,发现方法中抛出异常后,事务没有回滚,检查项目的spring事务配置后,发现是没有问题的,该方法按道理是受spring事务控制,没有回滚的原因,最后在下面的文章中找到了原因,原因是我们项目中事务配置是默认的,也就是说只有碰到runtimeException后...

xuwenjingrenca的博客 367
上一篇: Ibatis 数据库事务不能回滚问题
下一篇: 关于linux下定时备份mysql数据库下指定数据库,删除5天后的
iteye_9721
博客等级 码龄8年 0粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值