SpringBoot多數據源事務管理機制

寫到多數據源事務來了就必定寫成功了多數據源項目,可以參考我上一篇博客:SpringBoot根據包名進行區分使用多數據源

 

1、文章中的第七步其實就已經配置好了事務管理器到Spring容器了

按照套路來第二個數據源的事務管理Bean名字大家應該想到了那就是“test2TransactionManager”

 

2、是時候改裝Service層加上事務註解了---->記着這裏是個坑

3、測試------------>報錯

很顯然,有多個事務,容器不知道我們要的是哪個事務,所以第二步的那個坑現在來填

4、填坑

5、問題-------->當Controller層帶着第二個參數age=0到這個Service方法來,運行後的結果對兩個數據到數據庫的結果是怎樣的?

                                                           不要偷看答案

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

答案:

           第一個成功插入數據庫,第二個失敗進行回滾

解答:

           此Service方法上面加上的註解事務爲第二個數據源,所以,第一個數據源它可管不着,第一個執行掉第一行語句就已經插入到數據庫了,第二個由於事務管着了,所以需要等到方法完全執行完畢才能夠插入到數據庫,這個時候發現此方法異常了,於是進行了數據回滾操作。

 

那麼問題來了,如果是在分佈式項目環境下,又該如何處理SpringBoot的事務問題呢?

 

我的下一篇博客:SpringBoot使用jta+atomikos解決分佈式事務

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章