在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Java/ java 事務(wù)用.xml配置的方式怎么設(shè)置兩個(gè)報(bào)錯(cuò)都能回滾?

java 事務(wù)用.xml配置的方式怎么設(shè)置兩個(gè)報(bào)錯(cuò)都能回滾?

我知道用注解的方式是這么寫(xiě)的:
@Transactional(rollbackFor={RuntimeException.class, Exception.class})
那么用xml配置該怎么寫(xiě)呢?
圖片描述
備注:這個(gè)CustomException繼承自Exception

clipboard.png

TbProduct product = this.addProduct(dto, user);
if(1==1){
    throw new CustomException(9999,"test");
}

按照下方配置,如果程序運(yùn)行期間報(bào)錯(cuò),不會(huì)回滾(應(yīng)該是CustomException是Exception的子類(lèi),但是回滾只回滾CustomException造成的,但是如果我rollback-for="Exception"又會(huì)有問(wèn)題,上面的addProduct()不會(huì)回滾)

<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類(lèi)的。

//拋出Exception或Exception所有的子類(lèi)異常都會(huì)回滾。
@Transactional(rollbackFor=Exception.class)

所以你的xml配置一個(gè)Exception類(lèi)就可以了。

  <tx:method name="*" rollback-for="Exception"/>
2018年3月27日 02:42