学习spring分布式事务的时候,自己整了个demo,写test测试的时候发先事物没有回滚。此问题和分布式事务没关系。
1.在service层引入@Transaction注解
使用 throw new RuntimeException("cao zuo shi bai !!!"); 或者 throw e; 时数据正常回滚
直接抛出一个新的异常时,数据正常插入到db中。
后来db调试时比较两者的区别,正如测试结果一样。
在判断的时候直接进了else方法。
查证资料后得知,Spring的AOP事务管理默认是针对unchecked exception回滚。只需要引入@Transaction的时候指明rollbackFor=Exception.class
直接抛出checked exception数据也可以正常回滚