首页 > 其他分享 >Spring事务基础介绍

Spring事务基础介绍

时间:2023-06-16 10:46:27浏览次数:28  
标签:事务 TransactionDefinition Spring void 介绍 获取 boolean

事务

  • 本文只介绍声明式事务管理,即使用AOP实现,使用 @Transactional 开始事务
  • 事务角色
    • 事务管理员:发起事务方,在Spring中通常指代业务层开启事务的方法
    • 事务协调员:加入事务方,在Spring中通常指代数据层方法,也可以是业务层方法

接口介绍

  • PlatformTransactionManager:Spring事务管理器接口

    • TransactionStatus getTransaction() :获取事务状态信息

      • Spring 将事务的配置详细信息封装到 TransactionDefinition 对象中,此方法用于获得事务状态TransactionStatus

      • public interface TransactionStatus{
            boolean isNewTransaction(); // 是否是新的事务
            boolean hasSavepoint(); // 是否有恢复点
            void setRollbackOnly();  // 设置为只回滚
            boolean isRollbackOnly(); // 是否为只回滚
            boolean isCompleted; // 是否已完成
        }
        
    • void commit():提交事务

    • void rollback():回滚事务

  • TransactionDefinition:事务定义信息

    • String getName():获取事务对象名称。
    • int getlsolationLevel():获取事务的隔离级别。
    • int getPropagationBehavior():获取事务的传播行为.
    • int getTimeout():获取事务的超时时间。
    • boolean isReadOnly():获取事务是否只读。
  • TransactionStatus:事务运行状态

    • void flush():刷新事务
    • boolean hasSavepoint():获取是否存在保存点
    • boolean isCompleted():获取事务是否完成
    • boolean isNewTransaction():获取是否是新事务
    • boolean isRollbackOnly():获取是否回滚
    • void setRollbackOnly():设置事务回滚

事务传播行为

  • 介绍

    • 当事务方法被另一个事务方法调用时,需要指定事务应该如何进行传播

    • 使用 @Transactional 注解开启事务后,还需要在其中增加

常用的事务传播行为

image-20230609150010403
  • TransactionDefinition.PROPAGATION_REQUIRED
    • 若当前存在事务则加入,若没有事务则新建一个
    • 默认的事务传播行为,也是最常用的
  • TransactionDefinition.PROPAGATION_REQUIRES_NEW
    • 创建新事务,若当前存在事务则将其挂起
    • 不管外部方法是否开启事务,都会开启自己事务,且开启的事务相互独立互不干扰
  • TransactionDefinition.PROPAGATION_NESTED
    • 在外部方法开启事务时在内部开启新事务
    • 若外部方法无事务则使用PROPAGATION_REQUIRED

标签:事务,TransactionDefinition,Spring,void,介绍,获取,boolean
From: https://www.cnblogs.com/WgBlogSpace/p/17484970.html

相关文章

  • SpringMVC基础详解(包含示例)
    SpringMVC简介SpringMVC是一种基于Java的实现MVC设计模型的请求驱动类型的轻量级Web框架,跟Spring,Mybatis框架并称为SSM。是由Spring官方提供的基于MVC设计理念的web框架也是基于Servlet封装的用于实现MVC控制的框架,实现前端和服务端的交互与Servlet技术功能相同,均是......
  • 页面会话技术介绍,什么是Cookie和Session
    页面会话技术Cookie什么是cookie:服务端保存在浏览器端的数据片段。以key/value的形式进行保存。每次请求的时候,请求头会自动包含本网站此目录下的cookie数据。网站经常使用这个技术来识别用户是否登陆等功能。用途:保存登录状态,购物车等缺点:做为请求或响应报文发送,无形中......
  • 时间序列异常检测:统计和机器学习方法介绍
    理解时间序列数据在深入研究异常检测技术之前,先简单介绍时间序列数据的特征。时间序列数据通常具有以下属性:趋势:数据值随时间的长期增加或减少。季节性:以固定间隔重复的模式或循环。自相关:当前观测值与先前观测值之间的相关性。噪声:数据中的随机波动或不规则。让我们......
  • Spring框架中的线程池
    原文合集地址如下,有需要的朋友可以关注本文地址合集地址Spring框架中的线程池使用Java的ExecutorService接口实现ExecutorService是Java提供的用于管理线程池的高级工具。下面是在Spring框架中使用线程池的一般步骤:导入所需的依赖首先,确保你的项目中包含了使用线程池所需......
  • Spring Boot 实现定时任务动态管理,太爽了!
    一、功能说明SpringBoot的定时任务的加强工具,实现对SpringBoot原生的定时任务进行动态管理,完全兼容原生@Scheduled注解,无需对原本的定时任务进行修改二、快速使用具体的功能已经封装成SpringBoot-starter即插即用:<dependency><groupId>com.github.guoyixing</groupId>......
  • springboot 中使用 redis 处理接口的幂等性
    什么是接口幂等性?数学中:在一次元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同;在二次元运算为幂等时,自己重复运算的结果等于它自己的元素。计算机学中:幂等指多次操作产生的影响只会跟一次执行的结果相同,通俗的说:某个行为重复的执行,最终获取的结果是相同的,不会因......
  • SpringBoot快速整合RabbitMq小案例
    对于一个直接创建的springBoot项目工程来说,可以按照以下步骤使用rabbitmq添加依赖:添加rabbitMQ的依赖。<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>配置连接:在配置文件中配置虚拟主......
  • springboot项目启动
    报错:Couldnotresolveplaceholder'config.info'invalue"${config.info}"项目的bootstrap.yml配置文件的file-extension:yaml#这里我们获取的yaml格式的配置需要跟nacos配置列表的DataId结尾保持一致 ......
  • SpringBoot集成kafka
    环境springboot2.7+kafka3.0。kafka安装请自行百度,话不多说直接上代码。1、添加maven依赖<dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId></dependency> 2、application.yml添加kafka配置sp......
  • Java基础面试笔记(三) _Spring
    1.Spring框架有哪些主要模块?截止到目前Spring框架已集成了20多个模块。这些模块主要被分如下图所示的核心容器、数据访问/集成、Web、AOP(面向切面编程)、工具、消息和测试模块。2.什么是依赖注入?什么是控制反转(IOC)?在Spring中,有几种依赖注入方式?依赖注入是在编译......