拋出自定義異常,spring AOP事務不回滾的解決方案


Spring AOP 默認對RuntimeException()異常或是其子類進行事務回滾,也就是說

事務回滾:throw new RuntimeException("xxxxxxxxxxxx"); 

事物不回滾:throw new Exception("xxxxxxxxxxxx"); 

 

那么,如何在拋出Exception或者自定義異常時,事務也進行回滾呢?有以下幾種方案:

 

1、在捕獲到異常或者顯示的拋出 RuntimeException

2、手動回滾----在捕獲到異常或者顯示的拋出自定義異常前,加一段代碼:

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

3、在AOP的配置文件中,添加如下信息:

<tx:method name="add*" propagation="REQUIRED" rollback-for="com.xxx.xxx.xxxException"/>

      這樣,在拋出自定義異常時,就會進行事務的回滾了

 

小結:

方法1:在做測試時比較方便,放在業務中無法區分具體的錯誤信息

方法2:在個別業務處理或者調試代碼時使用,放在代碼中不方便維護,每個異常都需要增加。

方法3:適合業務開發,也符合AOP的理念。將事務控制和業務分離


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM