Spring 事务如何指定不回滚的异常?

在 Spring 中,事务默认对所有的 RuntimeExceptionError 进行回滚。但是,你可以通过 @Transactional 注解的 noRollbackFornoRollbackForClassName 属性来指定不需要回滚的异常。

  1. noRollbackFor:用于指定不需要回滚的异常类。例如:

    ““java
    @Transactional(noRollbackFor = {CustomException.class})
    public void someMethod() {
    // …
    }

    “`

    在这个例子中,如果 <code>someMethod</code> 方法抛出的是 <code>CustomException</code>,那么事务就不会回滚。</p></li>
    <li><p><strong>noRollbackForClassName</strong>:用于指定不需要回滚的异常类名。例如:

    ““java
    @Transactional(noRollbackForClassName = {“CustomException”})
    public void someMethod() {
    // …
    }

    “`

    在这个例子中,如果 someMethod 方法抛出的是 CustomException,那么事务就不会回滚。

相反,如果你想指定哪些异常需要回滚,你可以使用 rollbackForrollbackForClassName 属性。这些属性的使用方式和 noRollbackFornoRollbackForClassName 相同,只是它们是用来指定需要回滚的异常。

需要注意的是,如果你同时指定了需要回滚的异常和不需要回滚的异常,那么需要回滚的异常设置将会被忽略。

发表评论

后才能评论