可以看到事物生效了!
测试示例三
由于使用示例三中进行了子方法调用,这里我们进行两次测试,根据不同的请求条件来进行测试!
第一次测试:
使用进行POST请求
http://localhost:8182/api/user/test3Body参数为:
{"id":1,"name":"xuwujing","age":18}控制台打印的数据:
请求参数:User [id=1, name=xuwujing, age=18] 查询的数据1:null 查询的数据2:User [id=1, name=xuwujing, age=18] 发生异常,进行手动回滚! Duplicate entry '1' for key 'PRIMARY' 最后查询的数据:null第二次测试:
使用进行POST请求
http://localhost:8182/api/user/test3Body参数为:
{"id":1,"name":"xuwujing","age":21}控制台打印的数据:
请求参数:User [id=1, name=xuwujing, age=21] 查询的数据1:null 查询的数据2:User [id=1, name=xuwujing, age=21] 查询的数据3:User [id=1, name=xuwujing2, age=21] 发生异常,进行手动回滚! Duplicate entry '1' for key 'PRIMARY' 最后查询的数据:null根据上述的两次测试,可以得出使用rollbackFor注解或者将该子方法的异常抛出由调用的方法进行处理都可以使事物生效!
测试示例四
由于使用示例四中进行了手动控制事物,这里我们进行两次测试,根据不同的请求条件来进行测试!
第一次测试:
使用进行POST请求
http://localhost:8182/api/user/test4Body参数为:
{"id":1,"name":"xuwujing","age":18}控制台打印的数据:
请求参数:User [id=1, name=xuwujing, age=18] 查询的数据1:null 查询的数据2:User [id=1, name=xuwujing, age=18] 查询的数据3:User [id=1, name=xuwujing2, age=20] 手动提交事物成功! 模拟第二个异常! 最后查询的数据:User [id=1, name=xuwujing, age=20]第二次测试:
事先还是把数据库id为1的数据给删除!
使用进行POST请求
http://localhost:8182/api/user/test4Body参数为:
{"id":1,"name":"xuwujing","age":21}控制台打印的数据:
请求参数:User [id=1, name=xuwujing, age=21] 查询的数据1:null 查询的数据2:User [id=1, name=xuwujing, age=21] 发生异常,进行手动回滚! 模拟一个异常! 最后查询的数据:null根据上述的两次测试,我们可以得出使用手动控制事物完全ok,只要提交了事物,即使后面发生了异常也不回影响之前的写入!如果在控制的范围之类发生了异常,也可以进行回滚!
测试示例图:

文章插图

文章插图
来源:https://www.cnblogs.com/xuwujing/p/11184162.html
推荐阅读
- SpringBoot 深度调优,让你的项目飞起来
- SpringBoot2.0 整合 JWT 框架,解决Token跨域验证问题
- SPRINGBOOT之自定义全局异常处理
- SpringBoot配置文件敏感信息加密
- 使用SpringBoot+Dubbo搭建微服务笔记
- 怎么判断茶汤的好坏
- 分布式系统常见概念
- java学习中springboot和ssm开发的区别
- 阿里架构师分享技术干货Spring+Redis+SpringBoot+Nginx等实践
- 学围棋的好处
