springboot事务手动回滚报错问题及解决

 更新时间:2026年05月17日 10:18:00   作者:bekote  
文章描述了在使用Spring框架时遇到的异常回滚问题,由于外部事务未正确响应内部手动标记的回滚操作导致,分析发现是JDK动态代理引起的,并尝试通过配置更改代理方式解决未果,最终通过更换Shiro整合包解决了问题

springboot事务手动回滚报错

捕捉异常之后手动标记回滚事务

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

没有嵌套事务,还是报

Transaction rolled back because it has been marked as rollback-only异常错误

查看错误堆栈

service调用的方法外层还套有一层事务,方法内部手动标记回滚,没有抛出异常,外部方法还是会提交事务导致报错

JDK动态代理导致的

但是Spring2.x默认使用cglib动态代理,更改配置spring.aop.proxy-target-class=true也不起作用

最后对比过往项目发现整合shiro时引入包

<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-spring-boot-starter</artifactId>
</dependency>

改用shiro-spring包可以解决

<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-spring</artifactId>
</dependency>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Mybatis如何开启控制台打印sql语句

    Mybatis如何开启控制台打印sql语句

    在SpringBoot与Mybatis整合开发中,开启控制台SQL语句打印是一个常见需求,有助于调试与性能优化,方法一:在Mybatis配置文件mybatis-config.xml中添加设置;方法二:在SpringBoot配置文件application.yml或properties中
    2024-11-11
  • Java序列化机制与原理的深入分析

    Java序列化机制与原理的深入分析

    有关Java对象的序列化和反序列化也算是Java基础的一部分,下面对Java序列化的机制和原理进行一些介绍
    2013-05-05
  • kotlin之闭包案例详解

    kotlin之闭包案例详解

    这篇文章主要介绍了kotlin之闭包案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • 在SpringBoot中通过@Value注入Map和List并使用YAML配置的详细教程

    在SpringBoot中通过@Value注入Map和List并使用YAML配置的详细教程

    在SpringBoot开发中,我们经常需要从配置文件中读取各种参数,对于简单的字符串或数值,直接使用@Value注解就可以了,但当我们需要注入更复杂的数据结构,比如Map或者List时,所以本文小编给大家介绍在SpringBoot中通过@Value注入Map和List并使用YAML配置的详细教程
    2025-04-04
  • springboot中RabbitMQ死信队列的实现示例

    springboot中RabbitMQ死信队列的实现示例

    死信队列是一种特殊的消息队列,用来存储无法被正常消费的消息,常被用来实现延迟处理,异常消息处理等,本文主要介绍了springboot中RabbitMQ死信队列的实现示例,感兴趣的可以了解一下
    2024-01-01
  • 解决SpringBoot运行Test时报错:SpringBoot Unable to find

    解决SpringBoot运行Test时报错:SpringBoot Unable to find

    这篇文章主要介绍了SpringBoot运行Test时报错:SpringBoot Unable to find a @SpringBootConfiguration,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Mac安装Maven的几种方法小结

    Mac安装Maven的几种方法小结

    本文主要介绍了Mac安装Maven的几种方法小结,主要包括通过Homebrew安装Maven,通过SDKMAN安装Maven和通过官方网站下载安装包安装Maven,感兴趣的可以了解一下
    2024-01-01
  • 新版本IntelliJ IDEA 构建maven,并用Maven创建一个web项目(图文教程)

    新版本IntelliJ IDEA 构建maven,并用Maven创建一个web项目(图文教程)

    这篇文章主要介绍了新版本IntelliJ IDEA 构建maven,并用Maven创建一个web项目的图文教程,需要的朋友可以参考下
    2018-01-01
  • restTemplate发送get与post请求并且带参数问题

    restTemplate发送get与post请求并且带参数问题

    这篇文章主要介绍了restTemplate发送get与post请求并且带参数问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Springboot配置suffix指定mvc视图的后缀方法

    Springboot配置suffix指定mvc视图的后缀方法

    这篇文章主要介绍了Springboot配置suffix指定mvc视图的后缀方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07

最新评论