当前位置: 首页 > article >正文

模拟银行账户转账业务

文章目录

      • 一、需求分析
      • 二、核心代码
        • 1. 业务层添加 Spring 事务管理
        • 2. 配置类中设置事务管理器
        • 3. 开启注解式事务驱动
      • 三、相关截图

一、需求分析

需求:
实现任意两个账户间转账操作,要求当转账过程出现异常时,转账方与被转账方的转账操作同时失败。

实现:
Spring 事务,在数据层或业务层保障一系列的数据库操作同成功同失败。

分析:
① 数据层提供基础操作,指定账户减钱,指定账户加钱;
② 业务层提供转账操作,调用减钱与加钱操作;
③ 提供两个账号和操作金额执行转账操作;
④ 程序正常执行时账户金额 A 减 B 加没有问题,当程序出现异常后,也要保证双方账户加减操作的一致性,也就是说异常出现前后的业务都应是失败的状态;
⑤ 基于 Spring 整合 MyBatis 环境搭建上述操作。

二、核心代码

1. 业务层添加 Spring 事务管理

//@Transactional标签添加事务管理
@Transactional
public interface AccountService {
    public void transfer(String outUname, String inUname, int money);
}

① Spring 注解式事务通常添加在业务层接口中,而不会添加到实现类中,为了降低耦合;
② 注解式事务可以添加到业务方法上表示当前方法开启事务,也可以添加到接口上表示当前接口所有方法开启事务。

2. 配置类中设置事务管理器

 //设置事务管理器
@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource) {
    DataSourceTransactionManager ptm = new DataSourceTransactionManager();
    ptm.setDataSource(dataSource);
    return ptm;
}
    

在这里插入图片描述

事务管理器要根据实现技术进行选择,MyBatis 框架使用的是 JDBC 事务!

3. 开启注解式事务驱动

@EnableTransactionManagement 注解用于开启注解式事务驱动。

在这里插入图片描述

三、相关截图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


http://www.kler.cn/news/17693.html

相关文章:

  • 【软件测试】测试分类
  • 《花雕学AI》28:革命性的 ChatGPT for SEO——让您的排名飙升 50%!
  • 人脸识别--传统+深度方法
  • 【GAMES101】04 Viewing Transformation
  • LVS+Keepalived 高可用群集部署
  • 如何发起一次完整的HTTP的请求流程
  • NLP模型(四)——seq2seq模型与Attention机制实现
  • TryHackMe-AD证书模板
  • 测试2:基础
  • MYSQL数据库
  • 《程序员面试金典(第6版)》面试题 16.11. 跳水板
  • Android多模块开发
  • Probabilistic and Geometric Depth: Detecting Objects in Perspective 论文学习
  • 配置KylinV10
  • Java中的互斥锁介绍
  • 如何挖到人生中第一个漏洞?保姆级漏洞挖掘教学
  • Docker
  • vim操作笔记
  • QT Graphics View坐标系转换
  • 一分钟快速实现Flask框架与SQLAlchemy框架的整合
  • 解释器模式
  • Unity 过场工具(Cutscene)设计(三)
  • 2023.5.7 第五十二次周报
  • B019_子查询篇
  • 从五一的旅游热潮看,该如何实现数字文旅的转型升级?
  • 浅聊一下cmake
  • 降维算法详解:理论及示例代码实现
  • 自学SQL入门(2)
  • 如何写出高质量代码
  • UG NX二次开发(C++)-用UF_OBJ_cycle_objs_in_part遍历对象