spring的注解事务控制测试方法

本文探讨了在SpringBoot框架下,将事务管理(@Transactional)置于Controller层而非Service层的效果。通过实例演示了异常处理机制如何影响数据库更新与回滚,以及try-catch对事务的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在公司做了个项目,同事搭的架子,用的springboot框架,但是没有service层,我在想以前学习的事务相关的操作都是在service层添加注解@Transactional,这次就直接试试添加到controller层了。
但是之前没测试过事务的问题,这次就自己简单测试了一下,在这记录一下。
首先先不添加事务注解。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191220100645875.png在这里插入图片描述
同时在一个方法中,自定义一个异常。该方法中有update和delete两种数据库操作方法。运行方法后,在delete方法前的update方法会执行成功,当报出异常后,后续代码不执行。![在这里插入图片描述](https://img-blog.csdnimg.cn/20191220100807593.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg3Nzg1Ng==,size_16,color_FFFFFF,t_70在这里插入图片描述
当给controller加入@Transactional注解后,运行方法,逻辑不变(在delete方法前的update方法会执行成功,当报出异常后,后续代码不执行。),但是之前的update方法会进行回滚操作,数据库会恢复到此update方法执行前的状态。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191220101350113.png在这里插入图片描述
不过要多说一点,如果方法中的异常try catch抓取了,异常前后的代码就都会执行。即update和delete方法均执行成功。throw抛出的话,则方法均不执行成功(throw无效)。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191220101542434.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg3Nzg1Ng==,size_16,color_FFFFFF,t_70在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值