Spring的聲明式事務管理

筆者之前從原理的層面講解過Spring的事務處理,包括編程式事務處理和聲明式事務處理,詳見博客 Spring事務處理-編程式事務和聲明式事務。這篇文章從原理的層面講解了Spring的事務管理機制,讀完了這篇博客,筆者可以一針見血的使用spring的處理機制。

今天這篇博客僅僅是Spring聲明式處理的正常使用,偏向工程的使用說明。還是以最近的幾篇博客中常用的test工程爲例,具體如下:

首先,第一步:在service層中需要事務管理的方法上添加註解@Transactional,下面是test工程中test-service子模塊的UserServiceImpl類中的一個方法:

  @Override
    @Transactional
    public HttpResult<Boolean> testTransaction(UserCreateReqDTO userCreateReqDTO) {
        if (userCreateReqDTO == null) {
            return HttpResult.successResult(Boolean.FALSE);
        }
        UserDO userDO = UserConvent.conventToUserDO(userCreateReqDTO);
        if (userDao.createUser(userDO)) {
            throw new SystemException(ErrorEnum.TEST_TRANSACTION);
//            return HttpResult.successResult(Boolean.TRUE);
        }
        return HttpResult.successResult(Boolean.FALSE);
    }

其實@Transactional註解是有參數的,可以不寫,這樣Spring將使用默認參數,也是最最常用的參數。關於參數的具體介紹,請參見我的博客點擊打開鏈接

然後,第二步:在spring的配置文件中添加如下內容:

    <!--事務相關-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
          p:dataSource-ref="defaultDataSource"/>
    <tx:annotation-driven transaction-manager="transactionManager"/>
在上面的文件中,第一條語句是通知spring框架對數據源defaultDataSource進行事務管理,要注意的是:這裏的defaultDataSource就是mybaties使用的數據源。

在上面的文件中,第二條語句是通知spring框架使用聲明式事務管理,也就是在代碼中使用@Transactional註解的形式聲明事務。


以後,在所有需要進行事務管理的方法上使用@Transactional紓解就可以了。有木有很方便。

至此,spring聲明式事務管理就配置完了。


覺得本文不錯的話,別忘了關注我哦。

代碼參見本人的github。點擊打開鏈接



筆者開設了一個知乎live,詳細的介紹的JAVA從入門到精通該如何學,學什麼?

提供給想深入學習和提高JAVA能力的同學,歡迎收聽https://www.zhihu.com/lives/932192204248682496

發佈了140 篇原創文章 · 獲贊 92 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章