阶段3 2.Spring_10.Spring中事务控制_3 作业-基于注解的AOP实现事务控制及问题分析_下
此时没有异常
测试我们的方法
执行报错
注解在实际的测试过程中,实际的执行顺序是有问题的。会先调用最终通知。然后再调用后置通知
最终通知已经关闭了连接。再调用后置通知肯定报错。
getThreadConnection发现当前线程上已经没有连接了
没有链接了会去再拿一个链接。再绑定到线程上。虽然已经绑定上去了。由于前置通知已经执行完了。这个connection自动提交已经是true了
再提交就不行了。
这里我们把自动提交设置为false测试下
通过打断点的方式。再下面三个地方加断点
运行测试,使用dubug的方式
首先断点同流在这里拿链接
由于没有就会链接池里面拿一个,并且设置为false。然后绑定线程
执行完了然后开启事物
执行到转账的方法之后。就会又来到这个地方
这个时候我们的线程上有连接。就往下走不拿链接
点击左下角绿色按钮放过这个ddao中的方法
点了好几次绿色的。跳转到了 这个release方法。也就是最终通知先走了
再次点击绿色的
这个时候才来到commit。但是由于release已经走过了。
再往下走已经没有任何意义
就算它提交了 数据库也不会改变。因为刚才执行操作的connection已经先关闭了。新的connection虽然提交没有异常。但是里面也没有任何的执行操作
画图
执行了最终通知后。线程解绑
最终解决方法就是环绕通知
把通知的注释都去掉。然后定义环绕通知的方法
这里的异常捕获要用Throwable
环保通知的注解
测试
转账成功
放开异常
转账失败。事务被控制住了
阶段3 2.Spring_10.Spring中事务控制_3 作业-基于注解的AOP实现事务控制及问题分析_下的更多相关文章
- 阶段3 2.Spring_10.Spring中事务控制_2 作业-基于注解的AOP实现事务控制及问题分析_上
创建maven的新项目 先复制坐标的依赖. 再把代码复制进来 先改造ioc的部分 复制上面一行代码.到下面 改成context 这里也是复制的上面两行代码.到下面改成context关键字 配置扫描的包 ...
- 阶段3 2.Spring_10.Spring中事务控制_6 spring基于XML的声明式事务控制-配置步骤
环境搭建 新建工程 把对应的依赖复制过来 src下内容复制 配置spring中的声明事物 找到bean.xml开始配置 配置事物管理器 里面需要注入DataSource 2-配置事物通知 需要先导入事 ...
- 阶段3 2.Spring_10.Spring中事务控制_5 spring事务控制的代码准备
创建一个工程,只搭建环境不做配置.等配置的时候把这个项目相关的代码再复制到新项目里面 jar包的打包方式 导入包 事务控制也是基于AOP的.所以这里导入aspectjweaver 复制jdbcTemp ...
- 阶段3 2.Spring_10.Spring中事务控制_4 spring中事务控制的一组API
分析aop的 xml 的代码.更直观一些 事务提交和回滚就是我们重复的代码 spring业余事务管理器,我们拿过来直接用就可以 提交和回滚的后面直接调用释放.所以释放资源之类就是多余的 在绑定连接到线 ...
- 阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制
新建项目 把之前项目src下的内容全部复制过来 pom.xml内复制过来 开始配置 新建一个config的包,然后再新建配置文件类SpringConfiguration @Configuration这 ...
- 阶段3 2.Spring_10.Spring中事务控制_9 spring编程式事务控制1-了解
编程式的事物控制,使用的情况非常少,主要作为了解 新建项目 首先导入包坐标 复制代码 这里默认值配置了Service.dao和连接池其他的内容都没有配置 也就说现在是没有事物支持的.运行测试文件 有错 ...
- 阶段3 2.Spring_10.Spring中事务控制_10spring编程式事务控制2-了解
在业务层声明 transactionTemplate 并且声称一个set方法等着spring来注入 在需要事物控制的地方执行 execute.但是这个execute需要一个参数 需要的参数是Trans ...
- 阶段3 2.Spring_10.Spring中事务控制_7 spring基于注解的声明式事务控制
创建新项目 复制上一个pom.xml的内容.依赖和打包的方式 再复制src的代码过来 bean.xml.多导入context的声明 Service的实现类增加注解 dao的set方法删掉 通过Auto ...
- 阶段3 2.Spring_10.Spring中事务控制_1 基于XML的AOP实现事务控制
新建项目 首先把依赖复制进来 aop必须引入.aspectjweaver 复制src下的所有内容 复制到我们的新项目里面 factory文件夹删掉 删除后测试类必然就报错 配置文件 beanFacto ...
随机推荐
- jq常用方法
$().addClass(css中定义的样式类型); 给某个元素添加样式$().attr({src:”test.jpg”,alt:”test Image”}); 给 ...
- 求二叉搜索树的第k小的节点
题目描述: /** * 给定一棵二叉搜索树,请找出其中的第k小的结点. * 例如, (5,3,7,2,4,6,8)中, * 按结点数值大小顺序第三小结点的值为4. * 这是层序遍历: * 5 * 3 ...
- ValueError:Object arrarys cannot be loaded when allow_pickle=False
运行python程序报错:ValueError:Object arrarys cannot be loaded when allow_pickle=False 错误原因:numpy版本太高 解决方案: ...
- Summer training round2 #4 (Training #20)
A!:UESTC1752 B!:找区间内L到R之间内的数的个数 权值分块加莫队 C!:给你一个哈斯图 去掉其中的几条边 要求输出字典序最大的拓扑排序:线段树模拟拓扑排序 D!:要求你找到最短路树并输 ...
- redis发布与订阅的实现
转自:https://blog.csdn.net/xiaoyu411502/article/details/51596477
- ftp不能复制文件
解决办法: ie->工具->internet选项->安全->自定义级别->下载->文件下载->启用
- 【HDU5890】Eighty seven
题目大意:给定 N 个数,M 个询问,每次询问如果去掉三个数(可能相同),能否选择恰好 10 个数字,凑出 87 这个数. 题解:骚操作.. 集合凑数问题是一个很经典的模型,即:背包问题. 先进行预处 ...
- LightOJ-1079-Just another Robbery(概率, 背包)
链接: https://vjudge.net/problem/LightOJ-1079#author=feng990608 题意: As Harry Potter series is over, Ha ...
- eval与exec的区别,以及变量的作用范围
# eval与exec的区别:eval 有返回值,而 exec没有返回值 # 这两个函数都是执行python语句,注意:里面传的是字符串的格式 a = eval('1+2') a # 这里a有值 3 ...
- react 中的路由 属性exact
https://www.cnblogs.com/nailc/p/8718137.html(copy)