spring的事物

DataSourceTansactionManager

Spring与JdbcTemplate或MyBatis框架集成时,提供的事务管理器.

事物的特性:原子性,一致性,隔离性,持久性

int TRANSACTION_READ_UNCOMMITTED = 1;  未提交读
int TRANSACTION_READ_COMMITTED   = 2;  已提交读
int TRANSACTION_REPEATABLE_READ  = 4; 重复读
int TRANSACTION_SERIALIZABLE     = 8; 序列化/不可并发


rollbackFor=Exception.class 设置遇到指定的异常类型进行回滚事务,readOnly=true
一般查询数据时需要设置为true,数据库底层会对查询进行优化处理,提高查询效率.

事物的传播行为

propagation=Propagation.REQUIRED  为默认值,表示一个方法被调用时,如果已经存在一个事务中则加入这个事务,否则,开启一个新事务;

propagation=Propagation.REQUIRES_NEW表示一个方法被调用时,不管调用的方法是否存在事务,被调用方法总为自己开启一个新的事务.

关于A方法调用B方法

总结
1、如果只有A加@Transactional注解;则AB在同一事务中;
2、如果只有B加@Transactional注解;AB方法为同一类,事务失效;AB不同类,只有B有事务

原理:
spring 在扫描bean的时候会扫描方法上是否包含@Transactional注解,如果包含,spring会为这个bean动态地生成一个子类(即代理类,proxy),代理类是继承原来那个bean的
此时,当这个有注解的方法被调用的时候,实际上是由代理类来调用的,代理类在调用之前就会启动transaction。然而,如果这个有注解的方法是被同一个类中的其他方法调用的,那么该方法的调用并没有通过代理类,而是直接通过原来的那个bean,所以就不会启动transaction,我们看到的现象就是@Transactional注解无效。

那回到一开始的问题,我们调用的方法A不带注解,因此代理类不开事务,而是直接调用目标对象的方法。当进入目标对象的方法后,执行的上下文已经变成目标对象本身了,因为目标对象的代码是我们自己写的,和事务没有半毛钱关系,此时你再调用带注解的方法,照样没有事务,只是一个普通的方法调用而已。
简单来说,内部调用本类方法,不会再走代理了,所以B的事务不起作用。

如果AB不同类,A调用的事代理类B,故B有事务。


 

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

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

相关文章

一文秒懂|Linux字符设备驱动

我的圈子: 高级工程师聚集地 我是董哥,高级嵌入式软件开发工程师,从事嵌入式Linux驱动开发和系统开发,曾就职于世界500强公司! 创作理念:专注分享高质量嵌入式文章,让大家读有所得! …

Linux相关--笔试和面试高频

Linux RedHat公司已经宣布停止维护CentOS服务器操作系统,可以选择华为开源的欧拉系统、阿里开源的龙蜥系统和腾讯开源的TencentOS系统 面试 几个基本的Linux命令 pwd #查看当前绝对路径 结果/home/stu touch / vi编辑器 #创建文件 mkdir -p /home/stu/test #当…

记录仿钉钉审批流(将MySQL换成Oracle)走过的坑

需求:实现审批流程 在Gitee上发现了一个功能还OK的项目,于是就clone下来了(如下图) 原项目用MySQL很好启动,B站上作者还录制了视频,可以去学习 这里主要记录将MySQL换成Oracle出现的问题 首先&#xff0c…

【古月居《ros入门21讲》学习笔记】18_常用可视化工具的使用

目录 说明: 1. Qt工具箱 日志输出工具:rqt_console 绘制数据曲线:rqt_plot 图像渲染工具:rqt_image_view 综合工具:rqt 2. 三维可视化工具:Rviz Rviz启动 使用示例 3. 仿真平台:Gazebo…

【Openstack Train安装】四、MariaDB/RabbitMQ 安装

本章介绍了MariaDB/RabbitMQ的安装步骤,MariaDB/RabbitMQ仅需要在控制节点安装。 在安装MariaDB/RabbitMQ前,请确保您按照以下教程进行了相关配置: 【Openstack Train安装】一、虚拟机创建 【Openstack Train安装】二、NTP安装 【Opensta…

二维数组处理

输入整型二维数组a(5行5列),完成如下要求: 输出二维数组a。 将a的第2行和第4行元素对调后,形成新的二维数组a并按行输出,每个元素之间隔一个空格。(行号从0开始计算)。 用对角线(指二维数组左…

【开源视频联动物联网平台】LiteFlow

LiteFlow是一个轻量且强大的国产规则引擎框架,可用于复杂的组件化业务的编排领域。它基于规则文件来编排流程,支持xml、json、yml三种规则文件写法方式,再复杂的逻辑过程都能轻易实现。LiteFlow于2020年正式开源,2021年获得开源中…

RK3568平台开发系列讲解(Linux系统篇)通过OF函数获取设备树节点实验

** 🚀返回专栏总目录 文章目录 一、获取获取设备树节点二、驱动程序沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍通过OF函数获取设备树节点实验 一、获取获取设备树节点 在 Linux 内核源码中提供了一系列的 of 操作函数来帮助我们获取到设备树中编写的…

Linux设置Nginx开机自启

文章目录 获取linux系统是多少位: getconf LONG_BIT获取CentOS版本: lsb_release -a获取nginx的版本: nginx -version第一步配置文件 vim /etc/rc.local最底部增加这一行: /usr/local/nginx/sbin/nginx 第二步注册systemctl服务 在/usr/lib/systemd/system目录…

计算机网络 一到二章 PPT 复习

啥币老师要隔段时间测试,我只能说坐胡狗吧旁边 第一章 这nm真的会考,我是绷不住的 这nm有五种,我一直以为只有三种 广播帧在后面的学习中经常遇到 虽然老师在上课的过程中并没有太过强调TCP/IP的连接和断开,但我必须强调一下&…

实施工程师运维工程师面试题

Linux 1.请使用命令行拉取SFTP服务器/data/20221108/123.csv 文件,到本机一/data/20221108目录中。 使用命令行拉取SFTP服务器文件到本机指定目录,可以使用sftp命令。假设SFTP服务器的IP地址为192.168.1.100,用户名为username,密…

5.如何利用ORBSLAM3生成可用于机器人/无人机导航的二维/三维栅格地图--以octomap为例

1 octomap的安装及官方文档 这里我们用ROS自带的安装方式即可: sudo apt install ros-melodic-octomap-msgs ros-melodic-octomap-ros ros-melodic- octomap-rviz-plugins ros-melodic-octomap-server 如上图就是安装成功了: 如果安装失败了,…

福德植保无人机:农业科技的未来已来

一、引言 随着科技的不断进步,无人机技术已经深入到各个领域。而在农业领域,福德植保无人机更是引领了科技潮流,为农业生产带来了革命性的改变。今天,让我们一起来了解福德植保无人机的魅力所在。 二、福德植保无人机的优势 高效作…

VSCODE 在新窗口中打开

使用VS习惯了,经常在新窗口中打开查看 但是VSCODE,无法拖动标签到一个新窗口中,一直以为没这个功能 后来发现 使用快捷健 ctlk,o 可以将标签页在新窗口中打开,虽然不如vsstudio方便,不过也可实现在新窗口打开的功能…

uniapp ios保存本地照片权限 uniapp存储权限

全局变量 我们在开发应用中,全局变量是非常重要的一环。 比如记录当前用户token,配置接口请求服务地址等全局使用的变量。 在uni-app中,有多种方式现全局变量,下面将一个一个整理分析。 一、 Storage 本地存储 本地存储及已文件的形式保持在本地,需要的时候通过访问本地…

iOS NSDate的常用API

目录 一、创建日期 1.获取当前时间 2.当前时间指定秒数之后/前的时间 3.指定日期之后/后的时间 4.2001年之后/前指定秒数的时间 5.1970年之后/后指定秒数的时间 二、初始化日期 1.init 2.时间间指定秒数的时间 3.指定时间指定秒数之前/后的时间 4.2001年指定秒数之后…

高速USB转以太网芯片CH397各系统使用指南

简介 CH397是一款USB2.0高速转以太网芯片,支持10M/100M网络的以太网MACPHY,内置青稞RISC-V 处理器、符合IEEE802.3 和IEEE802.3az-2010 协议规范。支持Windows/ Linux /macOS /iOS /Android 等多平台各系统,适配各类台式电脑、笔记本电脑、平…

mobaxterm 下载、安装、使用

下载 官网 MobaXterm free Xserver and tabbed SSH client for Windows 下载页面 MobaXterm Xserver with SSH, telnet, RDP, VNC and X11 - Download 点击下载 安装 双击安装 勾选协议 修改安装路径 ,等待安装完成 使用 启动 新建连接 输入主机用户名和密…

算法基础之表达式求值

算法基础之表达式求值 中序表达式求值 用栈 将字符和数字分别用栈存储 由下往上计算 左子树算完再算右子树 判断方法&#xff1a;当前符号优先级<前一个符号优先级 则左右子树已遍历完 #include<iostream>#include<cstring>#include<stack>#include&l…

7.浮点数转为整数【2023.11.29】

1.问题描述 给出一个浮点数&#xff0c;请将这个浮点数转换成整数。 2.解决思路 输入一个浮点数。 输出程序将浮点数转换为整数并输出。 3.代码实现 numfloat(input("请输入一个浮点数")) num1int(num) print(num1)4.运行结果