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

网站建设课程基础百度电商广告代运营

网站建设课程基础,百度电商广告代运营,成都的网站建设公司哪家好,8月4日建设部网站通报Spring 事务传播机制定义了在多个事务方法相互调用时,事务如何在这些方法间传播。它决定了一个事务方法调用另一个事务方法时,新的事务是如何开启、是否要加入已有的事务等情况。Spring 提供了 7 种事务传播行为,下面是详细介绍。 解释说明&…

  Spring 事务传播机制定义了在多个事务方法相互调用时,事务如何在这些方法间传播。它决定了一个事务方法调用另一个事务方法时,新的事务是如何开启、是否要加入已有的事务等情况。Spring 提供了 7 种事务传播行为,下面是详细介绍。

解释说明:事务方法:方法上加上事务注解的方法叫事务方法

一. PROPAGATION_REQUIRED(默认)

  若当前存在事务,就加入该事务;若不存在事务,就创建一个新事务。这是最常用的传播行为。

@Transactional(propagation = Propagation.REQUIRED)
public void methodA() {// 业务逻辑methodB();
}@Transactional(propagation = Propagation.REQUIRED)
public void methodB() {// 业务逻辑
}//解释说明:当methodA调用methodB时,由于methodA开启了事务,methodB会加入到methodA的事务中。

   在PROPAGATION_REQUIRED 传播机制下,methodA 和 methodB 属于同一事务,异常处理规则如下:

1.1 运行时异常或 Error

  若 methodA 或 methodB 抛出运行时异常( NullPointerException 或 Error,Spring 事务会默认回滚整个事务。

@Transactional(propagation = Propagation.REQUIRED)
public void methodA() {methodB(); // methodB 抛运行时异常
}@Transactional(propagation = Propagation.REQUIRED)
public void methodB() {throw new NullPointerException("空指针异常"); // 触发事务回滚
}//此时,整个事务回滚,methodA 和 methodB 的操作都不会提交到数据库。

1.2 受查异常

  若抛出受查( IOException,且未在 @Transactional 中配置 rollbackFor,Spring 事务不会自动回滚

@Transactional(propagation = Propagation.REQUIRED)
public void methodA() {methodB(); // methodB 抛受检异常
}@Transactional(propagation = Propagation.REQUIRED)
public void methodB() throws IOException {throw new IOException("IO 异常"); // 不会自动回滚事务
}

  若希望受检异常也触发回滚,需显式配置 rollbackFor

@Transactional(propagation = Propagation.REQUIRED, rollbackFor = IOException.class)
public void methodB() throws IOException {throw new IOException("IO 异常"); // 配置后触发事务回滚
}

二. PROPAGATION_SUPPORTS

  若当前存在事务,就加入该事务;若不存在事务,就以非事务方式执行。

@Transactional(propagation = Propagation.REQUIRED)
public void methodA() {// 业务逻辑methodB();
}@Transactional(propagation = Propagation.SUPPORTS)
public void methodB() {// 业务逻辑
}//解释说明:若methodA有事务,methodB会加入该事务;若methodA没有事务,methodB会以非事务方式执行。

解释说明:1. 若当前存在事务(如 methodA 开启事务,methodB 加入事务)运行时异常 / Error:
Spring 事务默认回滚整个事务。例如 methodB 抛出 NullPointerException,methodA 和 methodB 的数据库操作都会回滚。受检异常(如 IOException):
若未配置 rollbackFor,事务不会自动回滚,数据库操作正常提交。
若配置 rollbackFor(如 @Transactional(propagation = Propagation.SUPPORTS, rollbackFor = IOException.class),则触发事务回滚。2. 若当前不存在事务
假设 methodA 没有 @Transactional(即无事务),methodB 以非事务方式执行。
此时异常处理完全是普通代码逻辑:总结:PROPAGATION_SUPPORTS 的异常处理逻辑,本质由是否处于事务环境决定:
有事务时遵循事务回滚规则,无事务时按普通代码逻辑处理。

三. PROPAGATION_MANDATORY

  若当前存在事务,就加入该事务;若不存在事务,就抛出异常。

@Transactional(propagation = Propagation.REQUIRED)
public void methodA() {// 业务逻辑methodB();
}@Transactional(propagation = Propagation.MANDATORY)
public void methodB() {// 业务逻辑
}//若methodA有事务,methodB会加入该事务;若methodA没有事务,调用methodB时会抛出异常。

四. PROPAGATION_REQUIRES_NEW

  无论当前是否存在事务,都会创建一个新事务,并且挂起当前事务(如果存在)。

@Transactional(propagation = Propagation.REQUIRED)
public void methodA() {// 业务逻辑methodB();
}@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodB() {// 业务逻辑
}//当methodA调用methodB时,methodB会创建一个新事务,methodA的事务会被挂起,直到methodB的事务完成。

五. PROPAGATION_NOT_SUPPORTED

  以非事务方式执行操作,如果当前存在事务,就挂起当前事务。

@Transactional(propagation = Propagation.REQUIRED)
public void methodA() {// 业务逻辑methodB();
}@Transactional(propagation = Propagation.NOT_SUPPORTED)
public void methodB() {// 业务逻辑
}//当methodA调用methodB时,methodB会以非事务方式执行,methodA的事务会被挂起。

六. PROPAGATION_NEVER

  以非事务方式执行,如果当前存在事务,则抛出异常。

@Transactional(propagation = Propagation.REQUIRED)
public void methodA() {// 业务逻辑methodB();
}@Transactional(propagation = Propagation.NEVER)
public void methodB() {// 业务逻辑
}//若methodA有事务,调用methodB时会抛出异常。

七. PROPAGATION_NESTED

  若当前存在事务,则在嵌套事务内执行;若当前不存在事务,则执行与PROPAGATION_REQUIRED类似的操作。嵌套事务是外部事务的子事务,有独立的保存点,子事务的回滚不会影响外部事务,但外部事务回滚会导致子事务回滚。

@Transactional(propagation = Propagation.REQUIRED)
public void methodA() {// 业务逻辑methodB();
}@Transactional(propagation = Propagation.NESTED)
public void methodB() {// 业务逻辑
}//当methodA调用methodB时,methodB会在methodA的事务内创建一个嵌套事务。

http://www.dtcms.com/wzjs/329219.html

相关文章:

  • 沈阳世纪兴网站建设郑州官网网络营销外包
  • 南京 高端网站制作关键词优化
  • 民政部门网站建设方案网络营销专业大学排名
  • 区镇村政府网站群的建设全网推广
  • icp ip 网站备案西安seo管理
  • 动易网站系统促销方案
  • 公司网站管理整站优化代理
  • 泉州网站快速排名提升怎么优化网站
  • 平台系统维护是什么意思百度seo排名在线点击器
  • 大连小程序定制北京百度搜索排名优化
  • 网站建设税务开票湘潭网站制作
  • 有没有什么专门做兼职的网站建设企业营销型网站
  • 手机怎么自己做网站最经典的营销案例
  • 做感恩网站的图片大全google官网入口下载
  • neutral wordpress网站关键词排名手机优化软件
  • 苏州市城乡建设局网站首页线上推广方案怎么写
  • 网站转换模块怎么做大学生网页设计作业
  • 做网站推广我们是专业的哈尔滨seo优化公司
  • 网站百度未收录商桥安装显示病毒式营销案例
  • 部门网站建设怎么做百度搜索推广的定义
  • 搜索网站的方法全国防疫大数据平台
  • 阿里巴巴网站详情页怎么做哪些网站可以seo
  • 网站建设7个基本流程分析百度搜索风云榜下载
  • jsp动态网站开发参考文献免费培训seo
  • 重庆微信网站建设价格semester
  • 国外的网站建设网络营销方式都有哪些
  • 做向日葵的专业网站网络营销专业是干什么的
  • 已备案网站数量seo搜索引擎优化是做什么的
  • 个人怎么进行网络广告营销镇江抖音seo
  • 现代化专业群建设专题网站护理专业seo网站优化师