当前位置: 首页 > news >正文

网站访问速度查询/电商网站seo怎么做

网站访问速度查询,电商网站seo怎么做,做境外的赌博网站违法么,做问卷调查赚钱网站好一、Spring的事务传播机制 Spring的事务传播机制是Spring框架中最核心的机制之一,它能够灵活地控制多个事务方法的执行顺序、提交或回滚等行为。在Spring中,事务是通过TxManager来管理的,TxManager是一个接口,提供了开启、提交、…

一、Spring的事务传播机制

Spring的事务传播机制是Spring框架中最核心的机制之一,它能够灵活地控制多个事务方法的执行顺序、提交或回滚等行为。在Spring中,事务是通过TxManager来管理的,TxManager是一个接口,提供了开启、提交、回滚、检查和暂停某个事务等多种方法。Spring框架本身不提供事务管理的实现,而是通过和其他事务管理器进行整合来完成。常见的事务管理器有:JDBC、Hibernate、JPA和Atomikos等。

Spring支持以下7种事务传播行为:

  1. PROPAGATION_REQUIRED:如果当前存在事务,则加入该事务;否则新建事务,并在方法执行结束后提交事务。
  2. PROPAGATION_SUPPORTS:如果当前存在事务,则加入该事务;否则不开启事务。
  3. PROPAGATION_MANDATORY:如果当前存在事务,则加入该事务;否则抛出异常。
  4. PROPAGATION_REQUIRES_NEW:不管当前是否存在事务,都新建一个事务,并在方法执行结束后提交事务。
  5. PROPAGATION_NOT_SUPPORTED:不管当前是否存在事务,都不开启事务。
  6. PROPAGATION_NEVER:如果当前存在事务,则抛出异常;否则不开启事务。
  7. PROPAGATION_NESTED:如果当前存在事务,则在已有事务中嵌套一个事务;否则新建事务,并在方法执行结束后提交事务。

以上这些传播行为都可以通过Spring中的TransactionDefinition接口进行定义和设置。

二、Spring的事务传播机制的实现原理

在Spring框架内部,事务的传播机制是通过ThreadLocal对象来实现的。ThreadLocal是一个线程本地变量,它可以在当前线程中存储某个值,并且这个值可以被当前线程的任何方法所共享和修改。在Spring中,我们可以通过TransactionSynchronizationManager类来管理ThreadLocal变量。

在Spring中,开启事务的方法通常被称为事务模板方法。事务模板方法负责创建事务,并且将当前线程的状态保存在ThreadLocal变量中。在执行业务方法前,Spring事务管理器会检查当前线程的状态,如果当前线程已经存在事务,则直接使用该事务;否则创建一个新事务。

在Spring中,每个事务方法都是由一个或多个拦截器组成的。事务拦截器负责拦截业务方法执行前后的各种事件,并且在恰当的时候执行提交或回滚事务等操作。在Spring中,我们可以通过TransactionInterceptor类来实现事务拦截器。

在Spring的事务传播机制中,每个事务方法都是独立的,它们的事务行为是相互独立的。在事务方法内部调用其他事务方法时,Spring会根据所设置的传播行为来决定是否开启新事务,或者将当前事务合并到已有事务中。

Spring的事务传播机制是基于AOP实现的,它首先在调用业务方法之前,开启事务,并将事务状态保存在ThreadLocal变量中;然后执行业务方法;最后在业务方法执行结束后,根据事务状态来决定是提交还是回滚事务。

三、Spring的事务传播机制的源代码实现

接下来,我们将以Spring 5.3.0版本为例,通过源代码的方式来分析Spring的事务传播机制的实现细节。在此之前,我们需要先了解Spring的事务管理API和核心类的结构。

  1. Spring的事务管理API

Spring的事务管理API主要包括以下三个接口:

PlatformTransactionManager是事务管理器的顶层接口,它定义了使用事务的基本方法,如开启、提交、回滚、暂停、恢复等。所有的事务管理器都需要实现PlatformTransactionManager接口。

TransactionDefinition是事务定义接口,它定义了一个事务的属性,如事务的隔离级别、传播行为、超时时间和只读属性等。所有的事务管理器必须支持TransactionDefinition接口的所有属性。

TransactionStatus是事务状态接口,它定义了事务的当前状态,例如是否已经开始、是否已经提交、是否已经回滚等。所有的事务管理器必须支持TransactionStatus接口的所有状态。

  1. Spring的核心类

Spring的事务传播机制的实现主要涉及以下几个核心类:

TransactionSynchronizationManager是Spring事务同步管理器,它负责处理同步回调和资源清理,以及管理线程本地变量资源。 在Spring的事务传播机制中,TransactionSynchronizationManager使用ThreadLocal来保存当前线程的事务状态和事务资源。

TransactionAspectSupport是Spring事务切面支持类,它是Spring事务传播机制的核心实现类。TransactionAspectSupport类继承自AspectJAfterAdvice类,实现了org.aopalliance.intercept.MethodInterceptor接口,它可以作为一个通用的事务拦截器来拦截任何一个Spring Bean中的方法调用,并根据所设置的传播行为来决定是否开启新事务,或者将当前事务合并到已有事务中。

AbstractPlatformTransactionManager是PlatformTransactionManager接口的抽象实现类,它提供了大部分的PlatformTransactionManager接口方法的默认实现,具体实现细节由其子类来完成。

AbstractTransactionStatus是TransactionStatus接口的抽象实现类,它提供了大部分的TransactionStatus接口方法的默认实现,具体实现细节由其子类来完成。

相关文章:

【Spring传播机制底层原理】

一、Spring的事务传播机制 Spring的事务传播机制是Spring框架中最核心的机制之一,它能够灵活地控制多个事务方法的执行顺序、提交或回滚等行为。在Spring中,事务是通过TxManager来管理的,TxManager是一个接口,提供了开启、提交、…...

python通过tkinter制作词云图工具

一、基本功能 1.采取上传文本文档(仅支持.txt格式)的方式统计词频 2.背景图形样式可选择已经设定好的,也可选择本地上传的(支持.png .jpg .jpeg格式) 3.本地上传的图片需要进行抠图处理,并将抠图结果保存…...

Java-钉钉订阅事件

文章目录 背景什么是钉钉订阅事件钉钉订阅事件的应用场景 整体思路查看钉钉文档 什么是钉钉回调钉钉回调具体实操创建自己的应用钉钉回调开发过程中遇到的问题 总结 背景 最近需要做一个业务:钉钉组织架构下添加人员之后,要对该人员的数据信息做一个处理…...

【DataV/echarts】vue中使用,修改地图和鼠标点击部分的背景色

引入:使用 DataV 引入地图的教程是参考别人的,主要介绍修改地图相关的样式; 引入地图 是参考别人的,这里自己再整理一遍,注意需要安装 5 版本以上的 echarts; DataV 网址:https://datav.aliyun.…...

系统设计类题目汇总四

25 十个异步入库任务,如何保证他们原子入库? 了解了你的问题背景,确保10个异步入库任务原子性执行(即要么全部成功,要么全部失败)有以下几种方法: 数据库事务: 如果所有的入库操作都是在同一个…...

【C++心愿便利店】No.5---构造函数和析构函数

文章目录 前言一、类的6个默认成员函数二、构造函数三、析构函数 前言 👧个人主页:小沈YO. 😚小编介绍:欢迎来到我的乱七八糟小星球🌝 📋专栏:C 心愿便利店 🔑本章内容:类…...

微软研究院团队获得首届AI药物研发算法大赛总冠军

编者按:AI 药物研发是人工智能未来应用的重要方向之一。自新冠病毒(SARS-CoV-2)首次爆发以来,新冠病毒的小分子药物研发备受关注,于近期举行的首届 AI 药物研发算法大赛便聚焦于此。在比赛中,来自微软研究院…...

redis实战篇之导入黑马点评项目

1. 搭建黑马点评项目 链接:https://pan.baidu.com/s/1Q0AAlb4jM-5Fc0H_RYUX-A?pwd6666 提取码:6666 1.1 首先,导入SQL文件 其中的表有: tb_user:用户表 tb_user_info:用户详情表 tb_shop:商户…...

【C++】详解红黑树并模拟实现

前言: 上篇文章我们一起学习了AVL树比模拟实现,我们发现AVL树成功地把时间复杂度降低到了O(logN)。但是同时我们不难发现一个问题,在构建AVL树中我们也付出了不小的代价,频繁的旋转操作导致效率变低。为了解决这个问题&#xff0c…...

Matlab图像处理-最大类间方差阈值选择法(Otsu)

基本思想 最大类间方差阈值选择法又称为Otsu 算法,该算法是在灰度直方图的基础上用最小二乘法原理推导出来的,具有统计意义上的最佳分割阈值。它的基本原理是以最佳阈值将图像的灰度直方图分割成两部分,使两部分之间的方差取得最大值&#x…...

Spring Cloud(Finchley版本)系列教程(三) 服务消费者(Feign)

Spring Cloud(Finchley版本)系列教程(三) 服务消费者(Feign) 一、Feign和OpenFeign的对比 Feign是Netflix公司写的,是SpringCloud组件中的一个轻量级RESTful的HTTP服务客户端,是SpringCloud中的第一代负载均衡客户端。OpenFeign是SpringCloud自己研发的,在Feign的基础上支…...

AI图片生成 discord 使用midjourney

参考: 不用找咒语了!Midjourney图生文功能特征解析,玩转Describe命令,快速搞定AI绘画_哔哩哔哩_bilibili 1 登录 discord 2 点发现 找 midjourney 3 创建 服务器 -> 亲自创建 4 选 仅供我和我的朋友使用 5 起个 服务器名字 6 加bot 由于…...

gitlab 点击Integrations出现500错误

背景:在新服务器重新搭建了gitlab,并导入原来gitlab的备份,在项目中点击点击Integrations出现500错误。 解决方法:1.进入新服务器,将 /etc/gitlab/gitlab-secrets.json重命名为 /etc/gitlab/gitlab-secrets.json.bak …...

【2023高教社杯】A题 定日镜场的优化设计 问题分析及数学模型

【2023高教社杯】A题 定日镜场的优化设计 问题分析及数学模型 1 题目 构建以新能源为主体的新型电力系统,是我国实现“碳达峰”“碳中和”目标的一项重要措施。塔式太阳能光热发电是一种低碳环保的新型清洁能源技术[1]。 定日镜是塔式太阳能光热发电站(…...

rac异常hang死故障分析(sskgxpsnd2)

x86虚拟化的平台麒麟系统的一套RAC。事件梳理20:24左右,发现一个节点hang死,关闭操作没有响应。关闭hang死节点,另一个节点也发生hang死,然后重启了另一个节点。 无效分析部分 检查gi的alert日志 有一个很大跨度的时间回退 再看…...

2023.9.7 关于 TCP / IP 的基本认知

目录 网络协议分层 TCP/IP 五层(四层)模型 应用层 传输层 网络层(互联网层) 数据链路层(网络接口层) 物理层 网络数据传输的基本流程 网络协议分层 为什么需要分层? 分层之后&#xff0c…...

Python 图片处理

Step1 提取PDF中的图片,并另存 Step2 去除灰色纸张背景 import PyPDF2 from PIL import ImageEnhance,Image,ImageFilter import cv2 import numpy as np from skimage.filters import unsharp_mask from skimage.filters import gaussian from skimage.restora…...

信道估计 | 信道

文章目录 定义分类LS 估计MMSE估计LS vs MMSE 定义 从接收数据中将假定的某个信道模型参数估计出来的过程,如果信道是线性的,信道估计是对系统的冲击响应进行估计,需强调的是,信道估计是信道对输入信号影响的一种数学表示&#x…...

腾讯发布超千亿参数规模的混元大模型;深度学习与音乐分析与生成课程介绍

🦉 AI新闻 🚀 腾讯发布超千亿参数规模的混元大模型 摘要:腾讯在2023腾讯全球数字生态大会上发布混元大模型,该模型拥有超千亿的参数规模和超2万亿 tokens 的预训练语料。混元大模型将支持多轮对话、内容创作、逻辑推理、知识增强…...

[html]当网站搭建、维护的时候,你会放个什么界面?

效果图&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>网站建设中</title><style>/* 基础样式 */body, html {margin: 0;padding: 0;height: 100%;font-family: Arial, sa…...

javaee spring aop 的五种通知方式

spring配置文件 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns:aop"http://www.springframework.…...

【Redis】3、Redis主从复制、哨兵、集群

Redis主从复制 主从复制&#xff0c;是指将一台Redis服务器的数据&#xff0c;复制到其他的Redis服务器。前者称为主节点(Master)&#xff0c;后者称为从节点(Slave)&#xff1b;数据的复制是单向的&#xff0c;只能由主节点到从节点。 默认情况下&#xff0c;每台Redis服务器…...

vcpkg方式安装zlmediakit

主要参考: https://github.com/ZLMediaKit/ZLMediaKit/wiki/vcpkg%E6%96%B9%E5%BC%8F%E5%AE%89%E8%A3%85zlmediakit vcpkg的相关配置不在本文论述。很多库或源码下载不下来&#xff0c;通过第三方下载后放在download目录下&#xff0c;名称要和vcpkg期望的一致。可通过云服务器…...

【大数据】基于 Flink CDC 高效构建入湖通道

基于 Flink CDC 高效构建入湖通道 1.Flink CDC 核心技术解析2.CDC 数据入湖入仓的挑战2.1 CDC 数据入湖架构2.2 CDC 数据 ETL 架构 3.基于 Flink CDC 的入湖入仓方案3.1 Flink CDC 入湖入仓架构3.2 Flink CDC ETL 分析3.3 存储友好的写入设计3.4 Flink CDC 实现异构数据源集成3…...

微信小程序开发---网络数据请求

目录 一、小程序中网络数据请求的限制 二、发起get请求 三、发起post请求 一、小程序中网络数据请求的限制 具体有两个限制&#xff1a; &#xff08;1&#xff09;只能请求HTTPS类型的接口 &#xff08;2&#xff09;必须将接口的域名添加到信任列表中&#xff0c;在调试的时…...

vulkan学习路径

1.学习路径 了解图形渲染基础知识&#xff1a; 学习计算机图形学基础概念&#xff0c;包括坐标系统、三角形渲染、光照模型等。可以参考经典的图形学教材&#xff0c;如《Real-Time Rendering》和《Computer Graphics: Principles and Practice》。了解图形API的发展历史&#…...

NIFI使用InvokeHTTP发送http请求

说明 这里介绍四种平时常用的http请求方法&#xff1a;GET、POST、PUT、DELETE。 在官方的介绍文档中关于InvokeHTTP处理器的描述是这么说的&#xff1a; An HTTP client processor which can interact with a configurable HTTP Endpoint. The destination URL and HTTP Met…...

Spire.xls+excel文件实现单据打印

报表和单据打印&#xff0c;通常都是使用fastreport之类的&#xff0c;因为有了现成的xls模板样式&#xff0c;如果转成fastreport那还需要花时间&#xff0c;是用spire.xls这个玩意简单&#xff0c;超好用。 一.引用 using Spire.Xls; 二.基本的操作 // 创建工作簿&#xff…...

win10系统配置vmware网络NAT模式

1&#xff0c;查看win10 IP地址&#xff1a;ipconfig 2, vmware设置&#xff1a;编辑>>虚拟网络编辑器>>点击添加网络&#xff08;选择NAT模式&#xff09; 3&#xff0c;虚拟机网络设置&#xff1a;点击VMware虚拟机>>设置>>网络适配器 4&#xff…...

什么是数据中台,关于数据中台的6问6答6方法

在大数据/数字孪生时代&#xff0c;数据中台已经成为企业治理数据的核心平台。数据中台不仅处理和整合大量数据&#xff0c;还负责数据的存储、管理和保护工作&#xff0c;确保数据的准确性和可用性。数据中台的特点在于其能够提高业务效率&#xff0c;降低成本&#xff0c;增加…...