java Spring5通过声明式事务(注解方式)完成一个简单的事务操作

接着上文 java 代码样式为什么需要事务,讲述Spring5事务几种方式 认识API

下面 我们就来继续事务操作 我们重点使用声明式 本文叫大家用注解方式实现

首先 我们要在配置文件中 配置一个事务管理器

在bean.xnl最下面添加如下配置

<!-->配置事务管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
         <property name="dataSource" ref= "dataSource"></property>
  </bean>

因为我们用的是Jdbc 就要用到对应的类 然后下面set需要注入一个数据源 这上面就是我们配置的一个数据源
在这里插入图片描述

第二部 在bean.xml中声明一个命名空间 叫 tx

xmlns:tx="http://www.springframework.org/schema/tx"
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd

在这里插入图片描述
最后 在bean.xml最下面方 添加代码如下

<tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>

开启事务注解 这里 需要一个事务管理器 正好上面 我们刚声明了一个 用到了我们刚引入的tx命名空间
在这里插入图片描述

然后 我们将 senvice层下的transfAccoSenvice类加上注解

import org.springframework.transaction.annotation.Transactional;
@Transactional

在这里插入图片描述
类的顶上 加了一个 Transactional
这个注解代表的就是事务 可以加给类 也可以加给方法 加给类表示 整个类中所有的方法都会被添加事务
加给方法 那就是 这个方法会带有事务

非常的方便

我们打开数据库表 看一下两者的余额

在这里插入图片描述
然后 我们运行测试类代码 运行结果如下

在这里插入图片描述
还是 第一段sql执行成功了 然后 异常了 然后 我们会数据库去刷新一下表 再重新打开
在这里插入图片描述
可以看到 这次 李四并没有做冤大头 余额大家的都没有扣

说明我们的事务已经成功了

大家可能会想 是不是因为异常 所以都没变呢 但控制台明显看到 第一段减少的sql是执行完了的 而且控制台也输出了李四减完的余额11200.0
是因为 异常触发了事务回滚 数据都还原了

然后 我们将 senvice层下的transfAccoSenvice 中的 transferAccounts方法 修改如下

//转账方法
public void transferAccounts(int sponsorId, int recipientId, double money){
    Boolean paym = pay(money,sponsorId);
    if(paym){
        income(money,recipientId);
        System.out.println("交易完成");
    }
}

我们去掉了会报异常的 int i = 10/0;

再次运行测试类
在这里插入图片描述
显然 我们这次的代码就完全运行成功了
到数据库刷新表 然后查看

在这里插入图片描述
可以看到 全部操作成功 事务也就提交啦

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值