真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

分析動態(tài)代理給Spring事務(wù)埋下的坑-創(chuàng)新互聯(lián)

前言

Spring的聲明式事務(wù)讓我們不在編寫獲得連接、關(guān)閉連接、開啟事務(wù)、提交事務(wù)、回滾事務(wù)等代碼,通過一個簡單的@Transactional注解,就讓我們輕松進行事務(wù)處理。我們知道Spring事務(wù)基于AOP,采用動態(tài)代理實現(xiàn),雖然使用簡單,但是在實際場景中,我們也會遇到一些坑。而往往遇到坑之后,我們都會茫然,這是由于沒有對Spring事務(wù)的實現(xiàn)機制做一點了解導(dǎo)致的。因此本篇博客將從原理的角度分析下動態(tài)代理給Spring事務(wù)埋下的坑!

為徐聞等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及徐聞網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都做網(wǎng)站、成都網(wǎng)站設(shè)計、成都外貿(mào)網(wǎng)站建設(shè)、徐聞網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

從動態(tài)代理到Spring事務(wù)

UserService:

分析動態(tài)代理給Spring事務(wù)埋下的坑

txMethod和txMethod2方法模擬事務(wù)方法(相當于@Transactional)

noTxMethod方法是普通方法

UserServiceImpl

分析動態(tài)代理給Spring事務(wù)埋下的坑

在Spring事務(wù)中,我們往往是在Service層進行事務(wù)控制。

我們在UserServiceImpl中想模擬的是:

一個有事務(wù)的方法,去調(diào)用另一個有事務(wù)的方法,會怎么樣?

一個沒有事務(wù)的方法,去調(diào)用一個有事務(wù)的方法,會怎么樣?

UserHandler

分析動態(tài)代理給Spring事務(wù)埋下的坑

這里為了簡便,通過方法名稱來判斷是否開啟事務(wù)。

顯然,txMethod方法、txMethod2方法都“應(yīng)該”開啟事務(wù)。

UserTest

分析動態(tài)代理給Spring事務(wù)埋下的坑

下面,我們來說下運行結(jié)果:

proxyInstance.txMethod2()方法,會開啟事務(wù),這沒有問題。

proxyInstance.txMethod()方法,雖然在事務(wù)方法txMethod()內(nèi)部調(diào)用了txMethod2()事務(wù)方法,但是并沒有新開啟事務(wù)。

proxyInstance.noTxMethod()方法,雖然在沒有事務(wù)的方法noTxMethod()內(nèi)部調(diào)用了有事務(wù)的txMethod2()方法,但是并沒有開啟事務(wù)。

下面讓我們來對應(yīng)下Spring事務(wù)中的現(xiàn)象:

分析動態(tài)代理給Spring事務(wù)埋下的坑

上述的情況,說白了,就是在一個Service內(nèi)部,事務(wù)方法之間的嵌套調(diào)用,普通方法和事務(wù)方法之間的嵌套調(diào)用,都不會開啟新的事務(wù)!

為什么會這樣呢?

其實通過上面的動態(tài)代理的代碼,你應(yīng)該可以發(fā)現(xiàn):

動態(tài)代理最終都是要調(diào)用原始對象的,而原始對象在去調(diào)用方法時,是不會再觸發(fā)代理了!

那么如何解決呢?

很簡單,我們完全可以在抽出一個XxxService,在其內(nèi)部調(diào)用UserService.txMethod()和UserService.txMethod2()方法即可??偠灾苊庠谝粋€Service內(nèi)部進行事務(wù)方法的嵌套調(diào)用?。ㄒ驗閯討B(tài)代理導(dǎo)致這種場景事務(wù)失效了。)

好像Spring事務(wù)如此簡單,但是背后卻有這些道道,你被坑過么?

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


本文題目:分析動態(tài)代理給Spring事務(wù)埋下的坑-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://weahome.cn/article/cogseh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部