广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Spring中的@Transactional的工作原理
  • 838
分享到

Spring中的@Transactional的工作原理

2024-04-02 19:04:59 838人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录1、原理2、用法3、拓展1、原理 事务的概念想必大家都很清楚,其ACID特性在开发过程中占有重要的地位。同时在并发过程中会出现一些一致性问题,为了解决一致性问题,也出现了四种隔离

1、原理

事务的概念想必大家都很清楚,其ACID特性在开发过程中占有重要的地位。同时在并发过程中会出现一些一致性问题,为了解决一致性问题,也出现了四种隔离级别,这里就不再详述了,感兴趣的可以去查一下。下面我们讨论一下spring中的事务。

Spring中的事务有两种:

  • 编程式事务
  • 声明式事务

通常情况下我们使用声明式事务,它是基于Springaop实现的。基于AOP实现的事务极大得帮助了我们的开发效率,其本质是对方法进行前后拦截,在目标方法前加入一个事务,在目标完成后再加入一个事务进行提交或者回滚,这种方式下我们并不需要在目标方法中的代码中掺杂事务管理代码,轻松进行事务管理。

而编程式事务就需要我们修改代码来进行事务管理。这种方法看似很麻烦,但是它的存在自有它的道理,上面我们讲到的声明式事务控制,其控制的细粒度只能作用到方法上,无法在代码块中实现声明式事务控制。我们都知道,一旦加上事务,程序的运行效率就会降低,所以编程式事务也有它的用武之地。

但是我们的广大劳动人民也是智慧的。直接将需要事务的代码块独立成方法,这样仍然可以使用声明式事务。当然在开发中具体情况要具体分析了。

2、用法

事务的传播行为: 

 事务的隔离级别

@Transactional属性

 示例代码:

@Service
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class RoleServiceImpl implements RoleService {

    @Autowired
    private RoleDao roleDao;

    @Transactional(propagation = Propagation.SUPPORTS,readOnly = true)
    @Override
    public List<Role> findAllRoles() {
        return roleDao.selectAllRoles();
    }
}

3、拓展

1、为什么声明式事务只能应用于方法上?

  • 因为声明式事务是基于AOP实现的,AOP是基于动态代理实现的。
  • 动态代理只会捕捉来自外部的方法调用,
  • 意思就是类内部的方法调用类内部的另外方法,并不会发生事务行为。

到此这篇关于Spring中的@Transactional的工作原理的文章就介绍到这了,更多相关Spring @Transactional 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Spring中的@Transactional的工作原理

本文链接: https://www.lsjlt.com/news/150525.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Spring中的@Transactional的工作原理
    目录1、原理2、用法3、拓展1、原理 事务的概念想必大家都很清楚,其ACID特性在开发过程中占有重要的地位。同时在并发过程中会出现一些一致性问题,为了解决一致性问题,也出现了四种隔离...
    99+
    2022-11-13
  • Spring @Transactional工作原理详解
    本文将深入研究Spring的事务管理。主要介绍@Transactional在底层是如何工作的。之后的文章将介绍:propagation(事务传播)和isolation(隔离性)等属性的使用事务使用的陷阱有哪些以及如何避免JPA和事务管理很重...
    99+
    2023-05-30
  • spring声明式事务@Transactional底层工作原理
    目录引言工作机制简述事务AOP核心类释义@TransactionalTransactionAttributeSpringTransactionAnnotationParserAnno...
    99+
    2022-11-13
  • Spring的工作原理介绍
    本篇内容主要讲解“Spring的工作原理介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring的工作原理介绍”吧!spring原理内部最核心的就是IOC了,动态注入,让一个对象的创建不用...
    99+
    2023-05-30
    spring
  • Spring的工作原理是什么呢
    Spring的工作原理是什么呢,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Spring 的骨骼架构Spring 总共有十几个组件,但是真正核心的组件只有几个,...
    99+
    2023-06-02
  • Spring @Transactional事务失效的原因分析
    目录前言1.非 public 修饰的方法2.timeout 超时3.代码中有 try/catch4.调用类内部 @Transactional 方法5.数据库不支持事务总结前言 一个程...
    99+
    2022-11-13
  • 浅谈Spring Session工作原理
    目录1、引入背景2、使用方法3、工作流程4、缓存机制5、事件订阅6、总结1、引入背景 HTTP协议本身是无状态的,为了保存会话信息,浏览器Cookie通过SessionID标识会话请...
    99+
    2022-11-12
  • 详解Spring中的Transactional属性
    目录一、Transactional二、使用说明三、注解失效问题一、Transactional 声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创...
    99+
    2022-11-12
  • 解读Spring接口方法加@Transactional失效的原因
    目录问题总结问题 今天项目测试一个方法的时候,发现日志报错 日志报错大致如下:Connection is read-only. Queries leading to data mod...
    99+
    2023-03-13
    Spring接口 @Transactional失效的原因 @Transactional失效
  • JavaScript中的this工作原理
    这篇文章主要介绍“JavaScript中的this工作原理”,在日常操作中,相信很多人在JavaScript中的this工作原理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2022-10-19
  • Spring中Transactional属性的示例分析
    小编给大家分享一下Spring中Transactional属性的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、Transactional声明式事务管理...
    99+
    2023-06-15
  • jsonp的工作原理
    JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略)。 这一策略对于JavaScript代码能够访问的页面内容做了...
    99+
    2023-09-01
    javascript ajax php
  • 聊聊spring @Transactional 事务无法使用的可能原因
    spring transaction 建议 Spring团队的建议是你在具体的类(或类的方法)上使用 @Transactional 注解, 而不要使用在类所要实现的任何接口上。你当然...
    99+
    2022-11-12
  • 中国蚁剑的工作原理
    中国蚁剑连接http://192.168.11.157/dvwa/hackable/uploads/pass.php 蚁剑连接并同时用wireshark抓取流量 ...
    99+
    2023-09-09
    中国蚁剑 Powered by 金山文档
  • 在java中session的工作原理
    java中session的工作原理:在创建Session对象时,会有一个SESSION ID,它是唯一的、不重复的、不容易找到规律的字符串。在创建Session对象时,同时创建一个特殊的Cookie对象,并且会将这个特殊的Cookie对象携...
    99+
    2022-10-08
  • 如何深入分析Spring MVC工作原理
    这篇文章将为大家详细讲解有关如何深入分析Spring MVC工作原理,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Spring MVC框架介绍Spring MVC属于SpringFrameW...
    99+
    2023-06-05
  • spring中@Transactional的失效场景有哪些
    小编给大家分享一下spring中@Transactional的失效场景有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、失效场景集一:代理不生效Spring...
    99+
    2023-06-22
  • 网闸的工作原理
    网闸GAP由固态读写开关和存储人质系统组成,其中固态开关的转换效率达到了纳秒级,存储介质通常采用scsi硬盘,因此GAP的性能得到了保证。 GAP连接在两个独立的网络系统中间,内网与外网永远不同时连接,在同一时刻只有一个网络与安全隔离网闸...
    99+
    2023-09-04
    服务器 网络 运维
  • MySQL Mydumper的工作原理
    这篇文章主要讲解了“MySQL Mydumper的工作原理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL Mydumper的工作原理”吧! ...
    99+
    2022-10-18
  • CSS hack的工作原理
    本篇内容主要讲解“CSS hack的工作原理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS hack的工作原理”吧!CSS hack简介CSS hack由...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作