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

网站建设与推广实训总结wordpress 文章连续

网站建设与推广实训总结,wordpress 文章连续,wordpress极简cms主题,马鞍山市网站建设公司一、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接口方法的默认实现,具体实现细节由其子类来完成。

http://www.yayakq.cn/news/990770/

相关文章:

  • html网站列表怎么做正规网站制作公司哪家好
  • 南京越城建设集团网站东莞做公众号的网站
  • 网站设计说明书整合织梦做的网站 xampp
  • 有没有做网站的大众点评如何做团购网站
  • 营销网站建设哪家好宁波网站推广渠道
  • 福州网站建设 网络服务保定网站seo服务
  • 镇江市住房与城乡建设局网站做宣传图片的软件
  • 景宁建设局网站厦门市建设局网站住房保障2018
  • 做电销哪些网站可以找到客户端h5链接制作平台
  • 济南网站建设云华互动点创网站建设
  • 网站开发与管理课程大数据营销论文
  • 途牛网站开发需求电子商务网站建设设计
  • 小程序网站开发运行合同wordpress 如何修改like和dislike
  • 做网站服务好凡科做的网站
  • 上海设计网站建设深圳知名网站建设平台
  • 网站模板大全南城仿做网站
  • 怎么做动漫小广告视频网站wordpress源码解析
  • 新品上市的营销方案搜索引擎优化的含义
  • 建造师人才网wordpress新站SEO优化
  • 网站推广优化方式手机外贸网站建设
  • 四川省建设工程质量监理协会网站哪个网站专做滨水景观
  • 沈阳做网站 智域郑州新闻发布会最新消息今天视频
  • html5国外网站模板html源码下载中明建投建设集团 网站
  • 备案 非网站备案网站建设报道稿
  • 网畅学校网站管理系统外贸建站上海
  • 网站的当前位置导航如何做咸阳学校网站建设多少钱
  • 免费做网站怎么做网站吗十大软件排行榜下载
  • 基于o2o的旅游网站建设国外域名
  • dedecmsv5.6 qq空间网站模板百度手机网站提交
  • 中国网站的建设冠辰网站建设