"
我知道用注解的方式是这么写的:
@Transactional(rollbackFor={RuntimeException.class, Exception.class})
那么用xml配置该怎么写呢?
<span class=""img-wrap""><img referrerpolicy=""no-referrer"" data-src=""/img/bVbeT7x?w=1359&h=311"" src=""https://cdn.segmentfault.com/v-5e8d8dec/global/img/squares.svg"" alt=""图片描述"" title=""图片描述"" />
备注:这个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类的。
//抛出Exception或Exception所有的子类异常都会回滚。 @Transactional(rollbackFor=Exception.class)
所以你的xml配置一个Exception类就可以了。
<tx:method name="*" rollback-for="Exception"/>
"版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。