| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Spring与SpringBoot里的事务操作 -> 正文阅读 |
|
[Java知识库]Spring与SpringBoot里的事务操作 |
一:Spring1.XML配置 首先我们知道spring事务底层是通过aop实现的,所以Spring里的事务配置与aop配置基本一样 (1)配置切面(advisor) 切面有两个必要元素,分别是切入点表达式与通知
(2)通过通知,指定哪些方法为事务方法以及设置事务属性(事务管理器也是在通知里面指定)。(给方法添加事务功能也算是一种增强)
(3)通过切入点表达式指定需要增强的对象(与<tx:method>不同的是,切入点表达式指定的是大致的范围,也就是通知织入的大致位置,具体是哪个方法是由<tx:method>指定的)
2.注解方式 ? ? ? ? (1)创建事务管理器并指定数据源(放进容器) ? ? ? ? (2)开启注解驱动并指定事务管理器<mvc:annotation-driven?transaction-manager="xxx"> ? ? ? ? ?(3)使用@Transaction注解指定事务方法,该注解可以指定隔离界别与传播行为 二:SpringBoot? ? ? ? 1.XML配置 ? ? ? ? ? ? ? ? 与Spring一样,可通过@importResource导入XML配置 ? ? ? ? 2.注解方式 ? ? ? ? ? ? ? ? (1)在启动类上添加@EnableTransactionManagement开启事务支持 ? ? ? ? ? ? ? ? (2)事务方法上添加@Transactional指定事务方法 三:SpringBoot的事务配置中为什么不需要指定数据源?为什么不需要常见事务管理器?? ? ? ? SpringBoot中一般通过如Druid自动配置类(引入starterJ就会引入自动配置类),创建一个特定类型的数据源并交由容器管理。而SpringBoot又会通过DataSource事务管理器自动配置类,自动从容器中获得一个数据源实例化事务管理器(引入jdbc-startet依赖就会引入该事务管理器自动配置类) 四:Spring事务传播行为(7种)? ? ? ?通俗点讲,SpringBoot传播行为就是为了解决当一个事务方法调用另外一个事务方法,则这两个事务如何去判定边界,即如何处理的问题。同时也给出了当多个事务方法面临回滚时的处理策略 ? ? ? ? 1.REQUIRED:调用者如果是事务方法,则被调用者的事务加入调用者的事务,也就是加入当前事务;如果调用者不是事务方法,则被调用者自己新创建一个独立的事务(可以理解为内部事务被需要,外部有则加入,无则自己新建) ? ? ? ? 2.REQUIRE_NEW:无论调用者是否事务方法,被调用者都会创建一个新的独立的事务(可以理解为新建型需要) ? ? ? ? 3.NESTED:如果调用者时事务方法,则被调用者的事务作为该调用者的事务的子事务,如果调用者不是事务方法,被调用者就自己创建一个新的事务(可以理解为嵌套型需要) ? ? ? ? 4.SUPPORTS:如果调用者是事务方法,则被调用者的事务加入调用者的事务中,如果被调用者不是事务方法,则被调用者也不启动事务(可以理解为支持外部事务的策略,有就加入,无也不新建) ? ? ? ? 5.NOT_SUPPORTS:无论调用者是否事务方法,被调用者都不启动事务(不支持外部事务) ? ? ? ? 6.MANDATORY:如果调用者是事务方法,则被调用者的事务加入该事务;如果调用者不是事务方法,则报错(可以理解为强制外部方法是事务方法) ? ? ? ? 7.NEVER:不使用事务,外部方法是事务方法就报错 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 6:18:26- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |