默认情况下,不会回滚。 在 Spring 事务()中,默认的回滚机制如下: 1. 会触发回滚的异常: Unchecked Exception(非受检异常):即 及其所有子类(如 , 等)。 Error:如 等系统级错误。 2. 不会触发回滚的异常: Checked Exception(受检异常/普通 Exception):即直接继承自 但不是 的异常(如 , , 等)。如果抛出了这类异常,Spring 默认会提交事务,而不是回滚。 --- 为什么 Spring 默认这样设计? Spring 的这一设计理念源自 EJB(Enterprise JavaBeans)规范和 Java 的异常设计哲学: Checked Exception:被认为是“可预见的、可恢复的”业务级异常,程序应当捕获并采取补偿措施,所以不强制回滚事务。 RuntimeException / Error:被认为是“不可恢复的、非预期的”程序 BUG 或系统故障,因此必须回滚以保证数据一致性。 --- 如何让普通的 Exception 也触发回滚? 在实际的业务开发中,我们通常希望只要发生任何异常,都直接回滚事务。为...