首先我们要知道,SpringMVC的事物控制其实就是利用了aop的思想。
所以在开发过程中我们要知道谁是切点?谁是通知?配置切面?
在这里的切点就是我们需要进行事物控制的方法,通知在这个事物控制里面就是事物控制。然后再进行织入的过程。
接下来我们用一个转账的例子来详细解释利用xml来进行事物的控制。
准备工作:
先在pom中导入我们需要的坐标:
junit junit4.11 test org.springframework spring-context5.0.5.RELEASE org.aspectj aspectjweaver1.8.4 org.springframework spring-jdbc5.0.5.RELEASE org.springframework spring-tx5.0.5.RELEASE org.springframework spring-test5.0.5.RELEASE c3p0 c3p00.9.1.1 mysql mysql-connector-java8.0.27 junit junit4.12
建立实体类:
再创建dao层的接口和实现:
再创建service层的接口和实现:
再创建controller层:
然后在配置文件中,分别为其配置bean对象:
通过完成上面的步骤我们已经完成了数据库的连接。
先进行验证 刚开始我们每个账户的钱都为5000
我们先执行一下controller层的main方法:
结果:
当我们在service层中:在转账方法中,这么书写:
它的运行过程为:第一个人已经把钱转出去了,但是出现了异常,程序结束运行,所以第三行代码就没执行,那么就没人收到上个人转出去的钱。所以就出现了如下问题:
所以我们要对其进行事物控制,要么一起运行成功,要么都不运行成功
接下来我们就用xml配置方式来完成事物控制。(在上面我们就已经说了用xml配置方式来完成事物控制其实就是基于aop(面向切面变成))
第一步:首先找到切点(也就是需要增强的方法)在这里就是我刚刚说的转账方法
第二步:配置好通知(增强方法)(在这个事物控制里面我们不需要自己去编写通知,只需要导入命名空间,通过别人的来完成)
第三步:织入(将切点和通知织入到一起)
第四步:测试
下面代码实例:
第一步:首先找到切点
第二步:配置好通知(增强方法)
在这里需要详细解释一下:首先我们先进行配置的事物的增强再配置的管理器。
我们通过引入tx命名空间来进行事物控制,首先标签
接下来是它的子标签:
上面的那个代表的意思就是需要增强的方法是transfer,第二个属性表示的是隔离级别,第三个代表的是传播行为,第三个代表的是只读。
第三步:织入
第四步:测试(最开始每人还是5000)
经运行结果:
就完成了事物控制。



