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

网站站点不安全中文域名是什么

网站站点不安全,中文域名是什么,锦州网站做优化,wordpress文章样式出错深入解析 Spring 事务管理原理及源码 Spring 事务管理(Transaction Management)是企业级应用开发中至关重要的功能之一,它确保数据操作的 原子性、一致性、隔离性、持久性(ACID)。 本篇博客将从 Spring 事务的基本概…

深入解析 Spring 事务管理原理及源码

Spring 事务管理(Transaction Management)是企业级应用开发中至关重要的功能之一,它确保数据操作的 原子性、一致性、隔离性、持久性(ACID)

本篇博客将从 Spring 事务的基本概念 开始,深入 Spring 事务的实现机制,并对 @Transactional 注解的底层执行流程 进行源码级解析。


1. 事务的基本概念

在数据库操作中,事务是一个逻辑操作单元,必须满足 ACID 四大特性:

特性说明
原子性(Atomicity)事务内的所有操作要么全部成功,要么全部失败
一致性(Consistency)事务执行后,数据库从一个一致性状态转换到另一个一致性状态
隔离性(Isolation)并发事务相互隔离,防止数据不一致
持久性(Durability)事务提交后,数据永久保存到数据库

⚙️ 2. Spring 事务的核心组件

Spring 通过 声明式事务编程式事务 来管理数据库事务。

2.1 Spring 事务的核心接口

组件作用
PlatformTransactionManager事务管理器接口
DataSourceTransactionManager适用于 JDBC 的事务管理器
JpaTransactionManager适用于 JPA(Hibernate)的事务管理器
TransactionDefinition事务的定义,包括隔离级别、传播行为等
TransactionStatus事务的当前状态

3. @Transactional 注解解析

Spring 通过 @Transactional 注解实现 声明式事务,常见用法如下:

@Service
public class OrderService {@Transactionalpublic void createOrder() {// 事务开始orderDao.insertOrder();paymentDao.processPayment(); // 若失败,事务回滚// 事务提交}
}

3.1 @Transactional 支持的属性

属性说明
propagation事务传播行为
isolation事务隔离级别
timeout事务超时时间
readOnly是否为只读事务
rollbackFor指定哪些异常会触发回滚

4. Spring 事务管理的源码解析

Spring 事务管理的核心是通过 AOP(面向切面编程) 来实现的,底层依赖于 TransactionInterceptor 和 PlatformTransactionManager 来实现事务的创建、提交、回滚等操作。

4.1 事务的创建与提交流程

1️⃣ @Transactional 代理拦截
Spring 事务使用 AOP 代理 来拦截标注了 @Transactional 注解的方法,并通过 TransactionInterceptor 来处理事务的启动、提交和回滚。具体如下:


public Object invoke(MethodInvocation invocation) throws Throwable {return transactionInterceptor.invokeWithinTransaction(invocation.getMethod(), targetClass, invocation::proceed);
}

2️⃣ 获取事务管理器并创建事务
事务管理器(如 DataSourceTransactionManager)负责管理事务。在 doBegin() 方法中会启动一个新的事务:


@Override
protected void doBegin(Object transaction, TransactionDefinition definition) {Connection conn = DataSourceUtils.getConnection(dataSource);conn.setAutoCommit(false); // 关闭自动提交,开启事务
}

3️⃣ 执行业务逻辑
当事务开始后,Spring 会执行业务方法(invocation.proceed())。如果在业务逻辑执行过程中出现异常,则会触发回滚。

4️⃣ 提交或回滚事务
当方法执行完成后,事务会根据是否抛出异常来决定提交还是回滚:

@Override
protected void doCommit(DefaultTransactionStatus status) {status.getConnectionHolder().getConnection().commit();
}@Override
protected void doRollback(DefaultTransactionStatus status) {status.getConnectionHolder().getConnection().rollback();
}

5. 事务的传播机制

Spring 事务支持 7 种传播行为,用于控制当前事务如何传播到嵌套事务中。以下是最常用的几种传播行为及其实际应用:

传播行为实例
1️⃣ REQUIRED(默认行为
如果当前存在事务,则加入事务;如果当前没有事务,则新建事务。例如:


@Transactional(propagation = Propagation.REQUIRED)
public void method1() {// 当前存在事务,将加入该事务
}

如果 method1() 中调用了一个没有声明事务的方法 method2(),method2() 会加入到 method1() 的事务中。

2️⃣ REQUIRES_NEW
当前方法总是会新建一个事务,暂停当前事务。例如:

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void method1() {// 新建一个事务,当前事务会被挂起
}

当 method1() 执行时,它会暂停外部事务,并在自身内部创建一个新的事务。

3️⃣ NESTED
在当前事务中创建一个嵌套事务。嵌套事务可以独立提交或回滚,但会共享外部事务的连接。例如:


@Transactional(propagation = Propagation.NESTED)
public void method1() {// 创建一个嵌套事务
}

嵌套事务在提交时不会影响外部事务,但可以独立回滚。

组合后的效果
REQUIRED + REQUIRES_NEW:会在外部事务的基础上创建新的事务,外部事务挂起,内部事务完成后恢复外部事务。

REQUIRED + NESTED:如果外部事务提交,嵌套事务也会提交;若外部事务回滚,嵌套事务也会回滚。

通过以上,应该可以很快了解Spring事务,也能更快的去排查跟定位问题。
如果你还有其他问题或想了解更多,欢迎留言交流! 😊


文章转载自:

http://CRcqYhfH.yLzdx.cn
http://07S6BLs4.yLzdx.cn
http://PAPRs4kp.yLzdx.cn
http://swI9rF60.yLzdx.cn
http://7eyz8PY5.yLzdx.cn
http://FNb9Ez6K.yLzdx.cn
http://3qd8ns5c.yLzdx.cn
http://GwqM4WkH.yLzdx.cn
http://Xk2KydFX.yLzdx.cn
http://ZaDnHDjh.yLzdx.cn
http://rErZRzcn.yLzdx.cn
http://d1KGL2aU.yLzdx.cn
http://CdJIKvmk.yLzdx.cn
http://avfEMz6y.yLzdx.cn
http://3A4Pjwes.yLzdx.cn
http://irDQlVsM.yLzdx.cn
http://yX4Hshwn.yLzdx.cn
http://KBXD5U8i.yLzdx.cn
http://uI6irFoA.yLzdx.cn
http://cbnUTvEe.yLzdx.cn
http://aR2jOUUF.yLzdx.cn
http://MWw1DBO8.yLzdx.cn
http://FZYNN6HH.yLzdx.cn
http://ToycvdhY.yLzdx.cn
http://LwZ4vy8Q.yLzdx.cn
http://R5Clxtkl.yLzdx.cn
http://sNu0JPce.yLzdx.cn
http://i9fP6O6c.yLzdx.cn
http://slw0hfVB.yLzdx.cn
http://oZubzqMd.yLzdx.cn
http://www.dtcms.com/wzjs/636943.html

相关文章:

  • 网站主题编辑工具WordPress自己建的网站地址
  • 平台网站模板素材图片下载昆明官网seo厂家
  • 用云主机做网站网站建设丨找王科杰专业
  • 徐州市城乡和城乡建设厅网站python做网站 jsp
  • 热卖平台网站怎么做百度如何提交网站
  • 如何做自动交易网站微信小程序商家入口
  • 网站备案掉了怎么办wordpress百度搜索
  • 清远网站设计公司一起做业官方网站
  • 狮山网站建设公司ps抠图教程
  • 杭州中小企业网站建设电子商务网站建设与管理考卷
  • 宿州建设公司网站休闲农业有哪些网络营销方式
  • 可以做调查问卷的网站著名的网站制作公司
  • 东高端莞商城网站建设上海松江做网站建设
  • 404做的好的网站公司的研究与开发
  • 东莞专业做外贸网站网站如何布局
  • 红包打赏的网站怎么做北京网站排名优化
  • 十二冶金建设集团有限公司网站如何用代码做网站
  • 国内最有趣的网站相城区住房建设局网站
  • 成都住房和城乡建设部网站购物网站开发中查看订单的实现逻辑
  • 河间网站建设制作网站开发主流语言
  • 电子商务网站架构东莞网络科技营销
  • 手机网站源码网站建设业
  • 网站后台栏目电话卡免费申请
  • 昆山市有没有做网站设计的制作的网站
  • 网站关键词表格下载网站行业关键词
  • 网站开发的经费预算做的比较好的国外网站一级页面布局分析
  • 做逆战网站的名字adspower指纹浏览器
  • 建网站 温州wordpress 优化版本
  • 东莞seo建站怎么投放辽宁建设工程招投标信息网
  • 手机搭建网站云南营销网站建设