首页 > 其他分享 >spring事务失效的场景

spring事务失效的场景

时间:2023-03-11 18:13:07浏览次数:38  
标签:事务 场景 spring 回滚 调用 当前 失效

spring事务的七种传播机制

事务方法发生了相互调用,事务如何传播:a调用b

  • REQUIRED(spring默认的事务传播级别):如果当前(a)没有事务,则(b)新建一个事务,如果当前存在事务,则加入这个事务。
  • REQUIRES_NEW:新建一个事务,如果当前存在事务,则挂起这个事务。各自有各自的事务
  • SUPPORTS:如果当前存在事务,则加入这个事务。如果当前不存在事务,则以非事务方式运行
  • NOT_SUPPORTED:以非事务方式运行,如果当前存在事务,则挂起事务,(a有事务就以事务方式运行,b以非事务方式运行)
  • MANDATORY:当前存在事务,则加入这个事务,当前没有事务,则抛出异常
  • NESTED:嵌套创建事务。如果当前存在事务,开启一个子事务。没有事务,就新建一个事务。(和required类似)
  • NEVER:非事务方式运行,当前存在事务,抛出异常
    ps:
    REQUIRES_NEW:新建的事务和原来事务无关,互不影响
    Nested:父事务回滚时,子事物也会回滚

spring事务失效的场景

1.数据库不支持事务(MyIsam):spring事务是基于数据库的,数据库引擎不支持事务。

2.没有被spring管理:比如业务层没有@Service注解,不由spring管理,自然事务不会生效。

3.spring没有开启事务:spring没有配置事务管理器DataSourceTransactionManager

4.spring不支持事务:事务传播机制的never或者not_supported这类,不支持事务。

5.方法不是public的:@Transation注解只能用于public方法的注解上。除非开启Aspectj代理模式

6.自身调用问题:spring事务通过aop来实现事务操作,如果只是类中使用this.或者直接调用方法,那就是相当于在代理类中调用了类中一个方法,事务自然失效。可以将自身注入,通过bean调用。

7.事务不会回滚:spring默认只会回滚非检查异常,RuntimeException,如果你想触发其他异常的回滚,需要在注解上使用rollbackfor配置一下

8.自己吞了异常:使用try cache将异常处理了,不抛异常,事务失效。

标签:事务,场景,spring,回滚,调用,当前,失效
From: https://www.cnblogs.com/yliunyue/p/17206619.html

相关文章

  • SpringMVC-day01
    SpringMVC-day01SpringMVC,底层是把Servlet、Filter、Listener再次封装课程内容SpringMVC介绍请求与响应RESTful风格请求交互SSM整合(注解版)拦截器学习目标掌握......
  • SpringMVC-day02
    SpringMVC-day0201_基于SSM的三层架构目标了解基于SSM框架的三层架构技术体系路径SSM框架的三层架构技术体系SSM框架的三层架构技术体系在三层架构开发时会......
  • Spring-day01
    Spring-day01#前置课程1.javase 1).面向对象:封装,继承,多态(面向接口) 2).反射 3).动态代理2.javaweb 1).servlet编程规范 2).网络编程3.数据库 1).......
  • Spring-day02
    Spring-day0201_开启Spring注解目标能够设置Spring的注解扫描路径注解开发的意义在配置文件中开启Spring注解扫描注解开发的意义在Spring中除了可以使用xml......
  • Spring-day03
    Spring-day0301_Spring的AOP概述目标了解AOP存在的意义及方式路径AOP介绍AOP作用AOP优势Spring中AOP的实现方式在前面我们提到:Spring技术的两大核心就是Ioc(......
  • Kuboard安装并部署springcloud微服务项目
    Kuboard安装并部署springcloud微服务项目Kuboard是一款k8s的管理界面,我认为它有页面美观(颜值即正义)、操作简洁、系统配置要求不高、对新手友好的特点。开发者认为他们......
  • Spring-初始Spring
    Spring1、简介Spring:春天:----给软件行业带来了春天2002年,首次推出了Spring框架的雏形:interface21框架2004年3月24号诞生RodJohnson,SpringFramework创始人,......
  • Spring-IOC理论浅析
    IOC理论最开始时业务实现:UserDao接口UserDaoImpl实现类UserService业务接口UserServiceImpl业务实现类在我们之前的业务中,用户的需求可能会影响我们原来的代码,我们......
  • Spring-第一个Spring程序
    1、HelloSpring1、第一个Spring项目创建Spring配置文件XXX.xml(标准名称:ApplicationContext.xml)<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.spri......
  • Spring-DI(依赖注入)及Bean的作用域
    DI(依赖注入)1、构造器注入前面已经说过了2、set方式注入【重点】依赖注入:Set注入依赖:bean对象的创建依赖于容器注入:bean对象中的所有属性,由容器来注入【环境......