首页 > 其他分享 >在使用@Transactional注解声明事务时,会有以下四种情况:哪几种会失效呢 ?

在使用@Transactional注解声明事务时,会有以下四种情况:哪几种会失效呢 ?

时间:2024-06-10 17:46:11浏览次数:20  
标签:事务 调用 Transactional 哪几种 事务时 失效 方法 类中

  • 不同情形
  • 在不同类中,事务方法A调用非事务方法B,事务具有传播性,事务生效;
  • 在不同类中,非事务方法A调用事务方法B,事务生效;
  • 在同一个类中,事务方法A调用非事务方法B,事务生效;
  • 在同一个类中,非事务方法A调用事务方法B,事务失效,这是由于使用Spring AOP代理造成的,只有当事务方法被当前类以外的代码调用时,才会由Spring生成的代理对象来管理。

解决办法:

  • 采用AopContext.currentProxy().方法B名()来进行调用
  • ApplicationContext.getBean()
  • 在当前类中注入自己
  • 使用手动事务

 事务失效的12种场景

标签:事务,调用,Transactional,哪几种,事务时,失效,方法,类中
From: https://www.cnblogs.com/isme-zjh/p/18240829

相关文章

  • @Transactional 注解下,事务失效的多种场景
    packagecom.example.api.demo.boke;importcom.example.api.demo.config.exceptions.MyException;importorg.springframework.transaction.annotation.Transactional;/***@Transactional*注解下,事务失效的七种场景*/publicclassTransaction{/**......
  • @Transactional(rollbackFor = Exception.class) 事务失效 A加了@Transactional注解
    @Transactional(rollbackFor=Exception.class)事务失效,一个方法A上加了这个注解,在方法A中调用了B方法,A方法中有数据库操作,B方法中也有,现在问题是,B方法中事务失效了,怎么保证不失效 在Spring框架中,使用@Transactional注解可以很方便地管理事务,但是如果你在方法A中调用了方法B,......
  • @Transactional(rollbackFor = Exception.class)注解的方法A,此方法A中插入成功,再调用
    当你在一个带有@Transactional注解的方法中插入数据成功,然后调用另一个方法(无论该方法是否也带有@Transactional注解),但发现第二个方法中的插入语句没有实际插入数据,但打印出了insert语句,这通常意味着事务没有按预期执行或事务被提前提交了。这里有几个可能的原因和解决方案:自......
  • c语言函数宏的封装方式有哪几种?
    在c语言开发中,出了使用函数封装代码之外,也经常使用宏来封装一些重要或简洁的代码。宏在c开发有三种:预定义宏,不带参宏,和带参数宏。通常,带参数宏也叫函数宏,函数宏,即包含多条语句的宏定义,其通常为某一被频繁调用的功能的语句封装,且不想通过函数方式封装来降低额外的弹栈压栈开销,在实......
  • 【java】@Transactional事务注解
    事务注解目录一、什么是事务?二、事务的特性(具有ACID的特性)1.A原子性(atomicity):2.C一致性(consistency):3.I隔离性(isolation):4.D持久性(Durability):三、@Transactional的介绍四、@Transactional的实现原理五、@Transactional事务的隔离级别六、@Transactional事务的传播......
  • 为什么在有@Transactional注解的方法,一定要加rollbackFor异常回滚的异常类型?
    在spring项目中,@Transactional注解默认会回滚运行时异常(RuntimeException)及其子类当你在一个有@Transactional注解方法里面抛了一个Expection类型的异常,呢它是不支持事务回滚的,异常继承体系我们在一个方法里面要对事务进行操作,如果要抛异常,应该抛出untimeException,不能直接......
  • Java开启事务(@Transactional)
    开始事务的代码可以使用Spring的事务管理器来实现。具体步骤如下:1.在Spring配置文件中配置事务管理器和事务通知器:```<beanid="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><propertyname="dataSource"ref="......
  • 浅谈@Transactional 注解的使用
    在SpringBoot的开发项目中,在Controller控制层,我们一般只做入参的校验;在Service服务层,我们把业务逻辑都写在这里,在服务层的方法中,我们会调用其它的服务层接口或者mapper层方法,所以,需要在服务层的方法上,我们需要增加:@Transactional(rollbackFor=Exception.class)添加该注解后......
  • css选择器有哪几种类型
    CSS选择器类型CSS选择器用于指定HTML元素或元素组,以便向它们应用样式。有四种主要类型的CSS选择器:1.基本选择器基本选择器按名称选择元素,包括:元素选择器:选择具有特定HTML标签的元素,如 <p></p>、<h1></h1>类选择器:选择具有特定类属性的元素,如 .primary、.contain......
  • 在java开发中平方怎么表示?平方表示的方法有哪几种?
    在java开发中平方怎么表示?平方表示的方法有哪几种?在我们计算一个数的几次方的时候。我们按照课堂中老师的教法就是在一个数的右上角写上一个小小的数字用来表示一个数的几次方,那么大家知道“在java开发中平方怎么表示吗?“和“java中平方表示的方法有哪几种吗?”,那么我们就来看......