模拟银行账户转账业务
文章目录
- 一、需求分析
- 二、核心代码
- 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 注解用于开启注解式事务驱动。
三、相关截图