Spring AOP 默认对RuntimeException()异常或是其子类进行事务回滚,也就是说
事务回滚:throw new RuntimeException("xxxxxxxxxxxx");
事物不回滚:throw newException("xxxxxxxxxxxx");
那么,如何在抛出Exception或者自定义异常时,事务也进行回滚呢?有以下几种方案:
1、在捕获到异常或者显示的抛出 RuntimeException
2、手动回滚----在捕获到异常或者显示的抛出自定义异常前,加一段代码:
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
3、在AOP的配置文件中,添加如下信息:
<tx:method name="add*" propagation="REQUIRED" rollback-for="com.xxx.xxx.xxxException"/>
这样,在抛出自定义异常时,就会进行事务的回滚了