一.概述

Spring Tx 全称为 Spring Transaction Management(Spring 事务管理),是 Spring 为 DB 事务管理提供过的一种便捷的接入方式。

二.导入依赖

Step1:在 pom.xml 中导入 spring-tx 依赖

Step:刷新 Maven 依赖,可以看到 spring-tx 联动依赖 spring-core 和 spring-beans 库

三.Spring 目前常用的事务两种机制

  • 注解式:通过 @Transactional 注解指定的 public 方法,在外部调用的时候通过 AOP 机制,在方法前后自动开启和提交/回滚事务。
  • 回调式:通过 TransactionTemplate 组件,提交一个回调方法,在方法前后自动开启和提交/回滚事务,并提供了对事务状态的人孔控制。

准备工作:

  • Step1:新建一个 biz.service 包
  • Step2:新建一个 UserService 类
  • Step3:在 UserService 类填入预备方法

四.注解式事务管理

优点:简单易用,不侵入业务逻辑代码,不会造成可读性和维护性的下降。

缺点:控制粒度较粗,容易造成大事务;类内部调用无法开启事务,容易掉坑。

场景:独立调用 DAO 层的纯 DB 操作

Step1:手工开启事务管理

Step2:标注需要事务管理的方法

五.回调式事务管理

优点:控制粒度较细,事务的边界可见即所得,不存在类内部调用失效的暗坑。

缺点:侵入业务逻辑代码,可读性和维护性会有少许下降

场景:Service 层的精细跨表多 DB 操作的事务控制

Step1:注入事务管理器 TransactionTemplate(后面简称TM)

Step2:使用TM调用execute或者executeWithoutResult方法,将需要DB事务的代码通过Lambda表达式包裹起来

六.回调式事务管理中的提交和回滚

匿名接口方法回调式

Lambda 表达式

无论是哪种表达形式,都可以通过 TransactionStatus 来手动控制事务的提交或者回滚,一种常见的形式如下:

本文章整理自上课PPT,仅供学习使用

Spring学习-Spring Tx相关推荐

  1. Spring学习-Spring核心技术(九)

    Spring中面向切面编程-AOP 1. AOP概念 2. AOP的功能和目的 3. AOP代理 4. 基于@AspectJ的AOP支持 (1) 启动@AspectJ支持 1) 使用Java配置方法开 ...

  2. Java 系列之spring学习--spring搭建(一)

    一.新建maven项目 二.引入spring jar包 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs ...

  3. spring 学习—spring的相关概念(01)

    1.spring 是开源的轻量级的框架 开源的意思是:免费的提供源代码 轻量级的意思是:此框架的使用不需要依赖于其他的东西,可以直接使用 2.spring 核心的主要两个部分 (1)aop: 面向切面 ...

  4. Spring 学习——Spring AOP——AOP配置篇Advice(有参数传递)

    声明通知Advice 配置方式(以前置通知为例子) 方式一 <aop:config> <aop:aspect id="ikAspectAop" ref=" ...

  5. spring 学习—spring 的ioc底层原理(03)

    2.画图分析ioc实现的原理

  6. spring 学习—spring 的ioc底层原理(02)

    IOC的底层原理 1.ioc底层原理使用技术 (1) xml配置文件 (2) dom4j 解决xml (3)工厂设计模式 (4)反射 什么叫做耦合度太高了:就是关联度太紧密了 高内聚与低耦合 高内聚: ...

  7. spring学习12 -Spring 框架模块以及面试常见问题注解等

    以下为spring常见面试问题: 1.Spring 框架中都用到了哪些设计模式? Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式-在AOP和remoting中被用的比较 ...

  8. Spring学习总结三

    Spring框架JdbcTemplate与事务 Spring学习总结三 0.需要的jar包 1.JdbcTemplate模板 1.1.JdbcTemplateAPI的操作 1.1.1.User类 1. ...

  9. 菜鸟学习Spring——60s配置XML方法实现简单AOP

    一.概述. 上一篇博客讲述了用注解的形式实现AOP现在讲述另外一种AOP实现的方式利用XML来实现AOP. 二.代码演示. 准备工作参照上一篇博客<菜鸟学习Spring--60s使用annota ...

最新文章

  1. tensorflow中的命令行参数介绍
  2. 分布式配置中心disconf第三部(基于xml配置的实现原理)
  3. 【Java学习】多线程2
  4. 【pmcaff】从 Lending Club 的 IPO,我们能学到些什么
  5. Spring-Cloud中的负载
  6. windows命令提示符下输入net start/stop mysql发生系统错误5,拒绝访问的解决方法
  7. [设计模式]策略模式
  8. 将数组前n个和后m-n个整体逆置的实现
  9. python微信自动打卡_「微信辅助」吃鸡再也不怕了,Python用wxpy实现微信自动回复...
  10. graphics | 基础绘图系统(十)——星形图、四瓣图、马赛克图
  11. dell服务器硬盘锁_服务器十大排行
  12. 用java编写一个故事的程序_使用Java怎么编写一个递归程序
  13. Android混淆篇 ijkplayer混淆
  14. linphone支持 G729
  15. plist 与 JOSN的解析
  16. 【微信技术-微信小程序】------- 微信小程序引用阿里巴巴iconfont图标库样式使用说明
  17. MPB:西湖大学鞠峰组-​​微生物群落定量宏基因组和宏转录组
  18. JavaScript数组方法大全(分为会不会改变原数组)
  19. 万里汇WorldFirst个人和企业帐户注册教程(送$25+1%提现费)
  20. Python正则表达式(regular expression)简介-re模块

热门文章

  1. 转载 TP6已开启报错,接口返回状态码500,无对应报错信息
  2. 深度技术 GHOSTXPSP3 快速装机专业版 V2011.04
  3. VIVADO的差分转单端IBUFDS的使用
  4. Solidity案例:经典众筹
  5. 金蝶云星空与奇门WMS-A对接集成委外领料查询打通出库单创建
  6. workflow编译
  7. Dell无线网卡驱动安装 linux
  8. 我国邮政行业现状调查:邮政成本没有精准算法
  9. Cocos2d-x Lua cc ccsccui区别和使用
  10. js从数组中提取自己所需的数据