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

纵饮孤独 提交于 2019-12-20 16:37:03

在公司做了个项目,同事搭的架子,用的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在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!