我知道用注解的方式是这么写的:
@Transactional(rollbackFor={RuntimeException.class, Exception.class})
那么用xml配置该怎么写呢?
备注:这个CustomException继承自Exception
TbProduct product = this.addProduct(dto, user);
if(1==1){
throw new CustomException(9999,"test");
}
按照下方配置,如果程序运行期间报错,不会回滚(应该是CustomException是Exception的子类,但是回滚只回滚CustomException造成的,但是如果我rollback-for="Exception"又会有问题,上面的addProduct()不会回滚)
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 传播行为 -->
<tx:method name="*" rollback-for="com.mal.vo.CustomException" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="create*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
<tx:method name="select*" propagation="SUPPORTS" read-only="true" />
<tx:method name="get*" propagation="SUPPORTS" read-only="true" />
</tx:attributes>
</tx:advice>
RuntimeException 是继承Exception类的。
所以你的xml配置一个Exception类就可以了。