我发现这种行为背后的原因是什么。如果应用程序抛出运行时异常,则Spring引导回滚事务。在我的服务层中,我捕获运行时异常并抛出特定于应用程序的异常,这就是spring不回滚事务的原因。因此,在更改代码以抛出最初生成的相同运行时异常后,应用程序成功回滚了事务。
如果我把它放在服务层中,上面的代码将会运行 @Transactional(rollbackFor = Exception.class)