spring 丟擲自定義異常報java.lang.RuntimeException: org.apache.cxf.interceptor.Fault: Transaction rolled back
阿新 • • 發佈:2019-01-05
介紹一下我報這個錯誤造成的原因:
我啟用了aop全域性事務管理,但是我在業務程式碼中自定義了一個異常類繼承了Exception,當我需要在指定位置丟擲這個異常的時候,就會報:java.lang.RuntimeException: org.apache.cxf.interceptor.Fault: Transaction rolled back,這個異常
我在網上也找了很多種方法,但是都沒什麼用,比如:
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/>
<property name="globalRollbackOnParticipationFailure" value="false" />
</bean>這種方法會導致事務無法回滾
首先,去除全域性事務管理(aop掃描路徑中不掃描我想自己手工註解事務的檔案目錄)
然後在需要事務管理的service介面實現方法上註解:
@Transactional(rollbackFor = {Exception.class, YrMallException.class})
YrMallException:自定義異常
Exception:異常父類
rollbackFor = {Exception.class, YrMallException.class}) -----如果丟擲裡面定義的異常,則事務回滾 這是我的解決方法,可能還有其他的,如果有了解的,歡迎評論