首页 > 其他分享 >Spring事务在哪些情况下失效

Spring事务在哪些情况下失效

时间:2023-06-02 15:01:38浏览次数:29  
标签:回滚 哪些 Spring Transactional 事务 order 失效 public


阅读文本大概需要3分钟。

0x01:如果数据库不支持事务,则失效

      因为事务是作用于数据库。例如使用MySQL且引擎是MyISAM,则事务会不起作用,因为MyISAM引擎本身不支持事务;如果改成InnoDB,则可以。

0x02:Service类没有被Spring管理

       因为Spring的事务是基于AOP,所以如果Service类没有被Spring管理,变成一个Spring Bean,即使添加了@Transactional注解,事务也是无效的。

0x03:内部调用

       不带事务的方法调用该类中带事务的方法,不会回滚。因为Spring的回滚是用过代理模式生成的,如果是一个不带事务的方法调用该类的带事务的方法,直接通过this.xxx()调用,而不生成代理事务,所以事务不起作用。常见解决方法“拆类”。


1. @Service
2. public class OrderServiceImpl implements OrderService {
3. 
4.  public void update(Order order) {
5.  updateOrder(order);
6.  }
7. 
8.  @Transactional
9.  public void updateOrder(Order order) {
10.  // update order
11.  }
12. 
13. }

0x04:使用默认的事务处理方式

Spring的事务默认是对RuntimeException进行回滚,而不继承RuntimeException的不回滚。因为在java的设计中,它认为不继承RuntimeException的异常是CheckException或普通异常,如IOException,这些异常在java语法中是要求强制处理的。对于这些普通异常,Spring默认它们都已经处理,所以默认不回滚。可以添加rollbackfor=Exception.class来表示所有的Exception都回滚。

0x05:事务只能应用于 public 方法

       @Transactional注解只能应用于public方法,如果你在protected、private或者默认可见性的方法上使用 @Transactional 注解,这将被忽略,也不会抛出任何异常。

0x06:数据源没有配置事务管理器


1.  // 其中 dataSource 框架会自动为我们注入
2.  @Bean
3.  public PlatformTransactionManager txManager(DataSource dataSource) {
4.  return new DataSourceTransactionManager(dataSource);
5.  }

如果要使用事务,没有配置事务管理器其他都是白搭。

关注我

每天进步一点点

Spring事务在哪些情况下失效_spring boot


标签:回滚,哪些,Spring,Transactional,事务,order,失效,public
From: https://blog.51cto.com/u_13538361/6402756

相关文章

  • Spring Boot实现xml传参和返回值
    阅读文本大概需要3分钟。    虽然json作为数据传输的格式大型其道,但是使用xml格式传输的系统还是在一些存量的系统中存在。另外WebService本身就是使用xml格式进行数据传输。今天用个小例子看看SpringBoot如何实现xml传参和返回值。1、新建maven项目,添加依赖1.<projectxm......
  • spring cloud gateway 自定义GatewayFilterFactory
    官网地址:https://docs.spring.io/spring-cloud-gateway/docs/2.2.9.RELEASE/reference/html/#writing-custom-route-predicate-factories参考地址:https://blog.csdn.net/myli92/article/details/127328893importcom.ruoyi.common.core.utils.StringUtils;importorg.springfr......
  • 【互联网医院】线上就医包含哪些功能?
    互联网医院会增加更多的医疗业务,电话问诊、视频问诊、个性化的医疗套餐等,未来互联网医院会建成围绕健康主题的深度大数据平台和多元化医疗服务生态体系,丰富人工智能、物联网等应用场景,为用户提供更好的服务体验、更低的成本、更高医疗质量的服务,下面我就给大家介绍下。互联网医院系......
  • PC吊装工套筒灌浆工证书怎么考?办理需要哪些条件?
    什么是pc吊装工?这类职业很多人可能都没有听说过,因为前面还带有英文字母,属于一种冷门的职业工种,主要是分布在建筑行业,在一些大型的工程里可以经常见到。那么说了这么多,pc吊装就是PC构件的吊装。包括叠合板,预制墙、梁、楼梯等构件的吊装。什么是PC套筒灌浆工?用专业的词汇解释,这类工人......
  • springboot gradle dockerfle
    本地打包FROMopenjdk:8-jdk-alpineRUNset-eux&&sed-i's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g'/etc/apk/repositoriesRUNmkdir/appCOPYbuild/libs/dataExChangePlatform-0.0.1-SNAPSHOT.jar/app/dataExChangePlatform-0.0.1-SNAPSHOT.......
  • SpringBoot Vue3 Element Plus 打造分布式存储系统
    SpringBoot+Vue3+ElementPlus打造分布式存储系统download:3w51xuebccom配置IDEA热部署-devtools开发过程中频繁修改代码,每次都需要重新编译,部署,重启服务器,这无疑极大浪费了我们的时间。解决这个问题的方法就是使用热部署技术。本篇文章将介绍如何在IDEA中使用devtools实现热部署......
  • 蛋糕网上销售系统|基于Springboot+Vue开发实现网上蛋糕系统
    作者主页:编程指南针作者简介:Java领域优质创作者、多年架构师设计经验、腾讯课堂常驻讲师主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助文末获取源码 项目编号:BS-SC-051前言:伴随着互联网的“低门槛”和人们金钱消费的数字化转变,网络购物奕然已经成为了时代......
  • 免费OA系统在企业中的应用有哪些?
    随着信息化时代的到来,企业办公系统已经成为了企业日常办公的必备工具。免费OA可以帮助企业实现信息化办公,提高工作效率,降低管理成本。探讨点晴OA系统的相关特点、优势以及具体的应用场景。一、免费OA系统的特点1.全面性:点晴OA系统覆盖了多种功能,包括文档管理、电子邮件、工作流、日......
  • 表格软件有哪些?热门表格软件推荐
    作为报表开发人员,我们经常需要使用各种表格软件来处理数据并生成清晰、易读的报表。在市面上,有许多不同类型的表格软件可供选择。下面我将列举7款热门的表格软件,并详细介绍其中一款优秀的软件—VeryReport。编辑搜图请点击输入图片描述(最多18字)1.VeryReport表格软件VeryReport是一......
  • Spring Boot如何自定义监控指标
    1.创建项目pom.xml引入相关依赖<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0https://maven.apache.org/xsd/maven-4.0.0.xsd"......