首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring事务在异常后不回滚

是因为在默认情况下,Spring只会在遇到未检查异常(RuntimeException及其子类)时才会回滚事务,而对于已检查异常(Exception及其子类)则不会回滚事务。

这种行为是为了避免误回滚,因为已检查异常通常是可以被捕获和处理的,而未检查异常通常是由于程序错误或系统故障引起的,需要回滚事务来保证数据的一致性。

如果希望在遇到已检查异常时也回滚事务,可以通过在事务注解上添加rollbackFor属性来指定需要回滚的异常类型,例如:

代码语言:txt
复制
@Transactional(rollbackFor = Exception.class)
public void someMethod() {
    // 业务逻辑代码
}

这样,当someMethod方法中抛出任何异常时,都会触发事务回滚。

另外,Spring还提供了noRollbackFor属性,用于指定不需要回滚的异常类型,例如:

代码语言:txt
复制
@Transactional(noRollbackFor = BusinessException.class)
public void someMethod() {
    // 业务逻辑代码
}

这样,当someMethod方法中抛出BusinessException异常时,事务不会回滚。

总结起来,Spring事务在异常后不回滚的原因是默认只回滚未检查异常,可以通过rollbackFor属性来指定需要回滚的异常类型,或使用noRollbackFor属性来指定不需要回滚的异常类型。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

7分21秒

82_尚硅谷_大数据Spring_事务属性_事务的回滚与不回滚.avi

12分14秒

28. 尚硅谷_佟刚_Spring_事务其他属性(隔离级别&回滚&只读&过期).wmv

12分53秒

Spring-001-认识框架

11分16秒

Spring-002-官网浏览

5分22秒

Spring-003-框架内部模块

17分32秒

Spring-004-ioc概念

2分13秒

Spring-005-创建对象的方式

13分55秒

Spring-006-ioc的技术实现di

12分37秒

Spring-007-第一个例子创建对象

9分40秒

Spring-008-创建spring配置文件

9分3秒

Spring-009-创建容器对象ApplicationContext

10分9秒

Spring-010-spring创建对象的时机

领券