SpringBoot事物Transaction实战讲解教程( 五 )

可以看到事物生效了!
测试示例三
由于使用示例三中进行了子方法调用,这里我们进行两次测试,根据不同的请求条件来进行测试!
第一次测试:
使用进行POST请求

http://localhost:8182/api/user/test3
Body参数为:
{"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/test3
Body参数为:
{"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/test4
Body参数为:
{"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/test4
Body参数为:
{"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,只要提交了事物,即使后面发生了异常也不回影响之前的写入!如果在控制的范围之类发生了异常,也可以进行回滚!
测试示例图:
SpringBoot事物Transaction实战讲解教程

文章插图
 

SpringBoot事物Transaction实战讲解教程

文章插图
 
来源:https://www.cnblogs.com/xuwujing/p/11184162.html




推荐阅读