spring声明roolback-for的例子?

San*_*nju 1 java aop spring transactions

想要在spring aop中的声明式事务管理示例........

其实这里

<aop:config>
    <aop:advisor advice-ref="addAdvice" pointcut="execution(* com.DAO.*.*(..))"/>
</aop:config>
<tx:advice id="addAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="add*" propagation="REQUIRED" rollback-for="" />
    </tx:attributes>
</tx:advice>
Run Code Online (Sandbox Code Playgroud)

所以这里我想写的实际上是rollback-for ="",有什么方法或其他吗?如果方法那么该方法将放在哪里?

Boz*_*zho 5

rollback-for您指定例外的名称.例如,如果您要回滚your.pkg.NoProductInStockException,则编写

rollback-for="your.pkg.NoProductInStockException"
Run Code Online (Sandbox Code Playgroud)

这将使事务在遇到与指定的匹配的异常时回滚.如果抛出的异常不匹配,则会将其传播到服务的调用者或包装到TransactionRolledBackException

交易文档说明:

向Spring Framework的事务基础结构指示事务的工作将被回滚的推荐方法是从当前在事务上下文中执行的代码中抛出异常.Spring Framework的事务基础结构代码将捕获任何未处理的异常,因为它会使调用堆栈冒泡,并确定是否将事务标记为回滚.

在其默认配置中,Spring Framework的事务基础结构代码仅在运行时未经检查的异常情况下标记用于回滚的事务; 也就是说,抛出的异常是RuntimeException的实例或子类.(错误也将 - 默认情况下 - 导致回滚).从事务方法抛出的已检查异常不会导致在默认配置中回滚.

您可以准确配置哪些Exception类型标记用于回滚的事务,包括已检查的异常.