1 //假設這是一個service類的片段 2 3 try{ 4 //出現異常 5 } catch (Exception e) { 6 e.printStackTrace(); 7 //設置手動回滾 8 TransactionAspectSupport.currentTransactionStatus() 9 .setRollbackOnly(); 10 } 11 //此時return語句能夠執行 12 return xxx;
如上:
當我們需要在事務控制的service層類中使用try catch 去捕獲異常后,就會使事務控制失效,因為該類的異常並沒有拋出,就不是觸發事務管理機制。怎樣才能即使用try catch去捕獲異常,而又讓出現異常后spring回滾呢,這里就要用到
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
完美解決問題。並且能夠使該方法執行完。