Spring 事务测试

场景1:测试@Transactional(readOnly = true)不能对数据库进行修改,代码测试如下:

1)接口定义如下:

Spring 事务测试

2)调用执行结果如下:

Spring 事务测试

3)界面调用报错如下:

Spring 事务测试

 

场景测试2:Propagation.REQUIRES_NEW 新事物不起作用

1)代码实现如下:

Spring 事务测试

2)测试结果:

Spring 事务测试

Spring 事务测试

原因是:有事务的方法handleInsertData调用另外一个事务类型为REQUIRES_NEW的方法,按照常理来说,B表应该会插入数据,但是因为2个方法都写在同一个类中,且insertB方法是dao层mapper的方法,spring只能理解为同一个事务。如果insertB方法中调用的是另外一个service的方法而不是dao 层mapper方法,则REQUIRES_NEW新事务生效