Spring事务管理—讲解、案例、应用

简介:Spring事务管理和数据库的事务管理的功能作用上是一样的,在学习数据库时,为了数据完整性,采用了事务管理,即开启事务、提交事务和管理事务。在SpringBoot框架中添加一个注解 @Transactional 就可以将当前方法、类和接口设置为一个注解。

一、Spring事务管理

1.1 基础知识

注解:@Transactional

位置:业务(Service)层的方法上、类上、接口上

作用:将当前方法、类、接口交给Spring进行事务管理,方法执行前,开启事务;成功执行完毕,提交事务;出现异常,回滚事务

1.2 开启事务管理日志

将下图代码添加到yml的配置文件中

#spring事务管理日志
logging:level:org.springframework.jdbc.support.JdbcTransactionManager: debug

二、事务进阶

2.1 事务属性

        1. rollbackFor

        默认情况下,只有出现 RuntimeException 才会回滚异常。rollbackFor属性用于控制出现何种异常类型,回滚事务。

package com.itheima.tliaswebmanagement.exception;import com.itheima.tliaswebmanagement.pojo.Result;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;@RestControllerAdvice // 异常类注解
@Transactional(rollbackFor = Exception.class) //所有异常,都要回滚
public class GlobalExceptionHandler {@ExceptionHandler(Exception.class) // 定义处理什么种类的注解public Result ex(Exception exception){// 异常打印出来exception.printStackTrace();return Result.error("出现异常,请联系管理员");}
}

        2. propagation(传播)

        事务传播行为:指的是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行事务控制

        REQUIRED:大部分情况下都是用该传播行为即可。

        REQUIRES_NEW:当我们不希望事物之间相互影响时,可以使用该传播行为。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/292647.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言之输入输出和字符(2)

目录 缓冲和重定向 ▇缓冲 ▇重定向 字符 转义字符 \和\"……字符和字符" 字符串字面量的写法 字符常量的写法 八进制转义字符和十六进制转义字符 字符编码 在看本节之前,请先看下上一章,做到更好地衔接。https://blog.csdn.net/W061…

为啥 1000 == 1000 是 false

今天跟大家聊一个有趣的话题,在Java中两个Integer对象做比较时,会产生意想不到的结果。 例如: Integer a 100; Integer b 100; System.out.println(ab);其运行结果是:true。 而如果改成下面这样: Integer a 100…

【动画图解】一次理清九大排序算法!面试官问到再也不慌!

排序算法 交换排序 冒泡排序快速排序 插入排序 直接插入排序希尔排序 选择排序 简单选择排序堆排序 归并排序基数排序桶排序 一、冒泡排序 冒泡排序是一种简单的交换排序算法,以升序排序为例,其核心思想是: 从第一个元素开始&#xff0c…

.NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式

之前写过使用自定义返回类的方式来统一接口数据返回格式,.Net Core webapi RestFul 统一接口数据返回格式-CSDN博客 但是这存在一个问题,不是所有接口会按照定义的数据格式返回,除非每个接口都返回我们自定义的类,这种实现起来不…

解决IDEA编译/启动报错:Abnormal build process termination

报错信息 报错信息如下: Abnormal build process termination: "D:\Software\Java\jdk\bin\java" -Xmx3048m -Djava.awt.headlesstrue -Djava.endorsed.dirs\"\" -Djdt.compiler.useSingleThreadtrue -Dpreload.project.path………………很纳…

Valentina Studio Pro for Mac:高效数据库管理工具

作为一款强大而高效的数据库管理工具,Valentina Studio Pro for Mac在Mac平台上的表现无疑是令人印象深刻的。无论您是初学者还是专业数据库管理员,Valentina Studio Pro都能够满足您的需要,并提供一流的工具和功能来简化数据库管理的过程。 …

linux静态ip配置方法(vmware虚拟机)

1、背景 自己搭建了一个虚拟机,vmware虚拟机,如果使用动态ip,经常变换地址,登录不方便。 优点: 静态网络配置的好处是该服务器地址是静态ip的,不会随着网络更换而出现波动。 2、配置方法 2.1 进入centos系统&#…

HarmonyOS 应用事件打点开发指导

简介 传统的日志系统里汇聚了整个设备上所有程序运行的过程流水日志,难以识别其中的关键信息。因此,应用开发者需要一种数据打点机制,用来评估如访问数、日活、用户操作习惯以及影响用户使用的关键因素等关键信息。 HiAppEvent 是在系统层面…

C++之深拷贝和浅拷贝

目录 浅拷贝 深拷贝 赋值运算符重载的深拷贝 在学习C类和对象时我们学习了浅拷贝,本期我们将再次回顾浅拷贝并为大家讲述深拷贝的概念。 浅拷贝 在学习类和对象时我们学习了拷贝构造函数的概念,而且我们也知道,因为拷贝构造函数属于类的默…

用 树莓派 做成巨型的 Game Boy 你见过吗?

​几年前,华纳斯科奇(Warner Skoch)萌生了3D打印巨型Game Boy想法。他最初的计划是把它挂在墙上,用一个时钟作为屏幕,就像一件艺术品一样。后来,他的工匠头脑开始活跃起来,开始考虑通过添加 Ras…

3_js数组与函数的应用

1. 数组的应用 1.1 数组的概念 在计算机科学中,数组数据结构(英语:array data structure),简称数组(英语:Array),是由相同类型的元素(element)的…

MySQL undo日志精讲2-undo日志写入

通用链表结构 在写入undo日志的过程中会使用到多个链表,很多链表都有同样的节点结构,如图所示: 在某个表空间内,我们可以通过一个页的页号和在页内的偏移量来唯一定位一个节点的位置,这两个信息也就相当于指向这个节点…