亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解Spring事務回滾的兩種方法

 更新時間:2023年07月25日 09:48:56   作者:阿桿  
Spring事務回滾的前提是你當前使用的數據庫必須支持事務,比如MySQL的Innodb是支持的,但Mysaim則是不支持事務的,本文就給大家介紹兩種Spring事務回滾的方法,需要的朋友可以參考下

方法一

  • 使用 @Transaction 來配置自動回滾,可以配置在類上,也可以配置在方法上(作用域不同),但對final或private修飾的方法無效,且該類必須是受spring所管控的,也就是被已經被注入的類,而不是new出來的類。

    • 若配置在方法上,則該方法被加上了事務
    • 若配置在類上,則等于給該類的所有方法都加上了該注解。此時如果在該類下的某個方法也加了 @Transaction ,則該方法使用自己的配置,其他方法使用類上的配置。
@Service
@Transactional
public class UserServiceImpl implements UserService {
    @Override
    public void save(User user) {
        //some code
        //db operation
    }
}
  • 若被配置的方法或類拋出了異常,則事務會被自動回滾,除非你在該方法中手動捕獲了異常,且沒有拋出新的異常。
  • 可以使用 @Transactional(rollbackFor = Exception.class) 來設定針對特定的異常進行事務回滾,如果不設置則默認會回滾 RuntimeException and Error (參考自源碼內文檔)。
@Service
@Transactional(rollbackFor = Exception.class)
public class UserServiceImpl implements UserService {
    @Resource
	private UserMapper userMapper;
    @Override
    public void save(User user) {
        userMapper.insert(user);
        throw new RuntimeException(); // 拋出異常,事務回滾,上面的insert插入失敗。
    }
}

方法二

通過注入 DataSourceTransactionManager 來手動開啟事務,手動回滾事務,用于拋出異常被catch后,進行手動回滾,可控程度更高,可以更靈活的使用。

  • 先注入 DataSourceTransactionManager 事務管理對象
  • new 一個 DefaultTransactionDefinition def = new DefaultTransactionDefinition(); 對象
  • 使用 TransactionStatus status = transactionManager.getTransaction(def);來開啟一個事務,
  • 使用 transactionManager.rollback(status); 來回滾這個事務
  • 使用 transactionManager.commit(status); 來提交這個事務
@Service
public class UserServiceImpl implements UserService {
   @Autowired
   private DataSourceTransactionManager transactionManager;
   @Override
   @Transactional
   public void save(User user) {
       DefaultTransactionDefinition def = new DefaultTransactionDefinition();
       // explicitly setting the transaction name is something that can only be done programmatically
       def.setName("SomeTxName");
       def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
       TransactionStatus status = transactionManager.getTransaction(def);
       try {
           // execute your business logic here
           //db operation
       } catch (Exception ex) {
           transactionManager.rollback(status);
           throw ex;
       }
   }
} // 此代碼案例來自Alibaba Coding Guidelines

到此這篇關于詳解Spring事務回滾的兩種方法的文章就介紹到這了,更多相關Spring事務回滾內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spring Security 強制退出指定用戶的方法

    Spring Security 強制退出指定用戶的方法

    本篇文章主要介紹了Spring Security 強制退出指定用戶的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 六個Java集合使用時需要注意的事項

    六個Java集合使用時需要注意的事項

    這篇文章主要為大家詳細介紹了六個Java集合使用時需要注意的事項,文中的示例代碼講解詳細,對我們學習java有一定的幫助,需要的可以參考一下
    2023-01-01
  • 如何在Java中創(chuàng)建線程通信的四種方式你知道嗎

    如何在Java中創(chuàng)建線程通信的四種方式你知道嗎

    開發(fā)中不免會遇到需要所有子線程執(zhí)行完畢通知主線程處理某些邏輯的場景。或者是線程 A 在執(zhí)行到某個條件通知線程 B 執(zhí)行某個操作。下面我們來一起學習如何解決吧
    2021-09-09
  • WebSocket整合SSM(Spring,Struts2,Maven)的實現示例

    WebSocket整合SSM(Spring,Struts2,Maven)的實現示例

    這篇文章主要介紹了WebSocket整合SSM(Spring,Struts2,Maven)的實現示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-01-01
  • Java實現用戶管理系統

    Java實現用戶管理系統

    這篇文章主要為大家詳細介紹了Java實現用戶管理系統,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • idea 離線安裝lombok插件的方法步驟(圖文)

    idea 離線安裝lombok插件的方法步驟(圖文)

    這篇文章主要介紹了idea 離線安裝lombok插件的方法步驟(圖文),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • SpringBoot使用MockMvc測試get和post接口的示例代碼

    SpringBoot使用MockMvc測試get和post接口的示例代碼

    Spring Boot MockMvc是一個用于單元測試的模塊,它是Spring框架的一部分,專注于簡化Web應用程序的測試,MockMvc主要用來模擬一個完整的HTTP請求-響應生命周期,本文給大家介紹了SpringBoot使用MockMvc測試get和post接口,需要的朋友可以參考下
    2024-06-06
  • JAVA流控及超流控后的延遲處理實例

    JAVA流控及超流控后的延遲處理實例

    這篇文章主要介紹了JAVA流控及超流控后的延遲處理,以實例形式較為詳細的分析了Java進行流量控制的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2014-12-12
  • Java由淺入深講解繼承上

    Java由淺入深講解繼承上

    繼承就是可以直接使用前輩的屬性和方法。自然界如果沒有繼承,那一切都是處于混沌狀態(tài)。多態(tài)是同一個行為具有多個不同表現形式或形態(tài)的能力。多態(tài)就是同一個接口,使用不同的實例而執(zhí)行不同操作
    2022-04-04
  • Java通過stmp協議發(fā)送郵件

    Java通過stmp協議發(fā)送郵件

    這篇文章主要為大家詳細介紹了Java通過stmp協議發(fā)送郵件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02

最新評論