上面的代码,如果正常执行的话没有什么问题的,但是如果代码执行过程中出现异常的话就有很大的问题了,就会出现数据不一致了。
一、异常演示
我们在zhangsan扣减金额之后模拟一个异常来看下,代码如下:
public void transferMoney() {
//减少钱
accountDao.updateMoneyByName("zhangsan",new BigDecimal(-100));
//模拟异常...
int i = 1/0;w
//增加钱
accountDao.updateMoneyByName("lisi", new BigDecimal(100));
}
我们在运行下:我们会发现这样的情况,zhangsan的账号钱少了,李四的账户钱不变,这样就有问题了,凭空消失了100元。
二、异常解决:未引入Spring事务管理
「公众号SpringBoot」: ①阿里巴巴前高级研发工程师;②估值20亿美金的Blued架构师;③北京知远公司创始人;④浙江甄才公司架构师;⑤云课堂学员10000+;⑥博客访问量1000万+;⑦10年互联网行业从业;⑧360万的访问《从零开始学SprngBoot》作者;⑨技术加盟多个独立项目。