在对Spring的事务回滚捕获的异常类型进行测试,发现当出现SQL异常时可以触发事务回滚,但是通过查看文档发现,Java.lang.SQLExcepetion是Java.lang.Excepetion的子类,在没有对事务设置rollbackfor=Exception.class时是不会默认对捕获的Excepetion类型异常触发事务回滚操作,而实际情况却与此相反,触发了事务回滚。
经过查阅相关资料,文章https://blog.csdn.net/qq_32331073/article/details/76525372对该问题进行了详细的解答。
文章中说到在项目开发中引入了spring框架后,SQLExcepetion被org.springframework重写,经过重写后涉及到dao的异常都是java.lang.RuntimeException的子类。因此事务回滚才会发生。