Spring事務(wù)傳播行為是什么?怎么用?其實(shí)這些困擾都可以總結(jié)成一個(gè)問題,即Spring事務(wù)傳播行為的實(shí)現(xiàn)方式,下面我們運(yùn)用實(shí)例來展示Spring事務(wù)傳播行為的實(shí)現(xiàn)方式。
在成都網(wǎng)站建設(shè)、成都網(wǎng)站制作中從網(wǎng)站色彩、結(jié)構(gòu)布局、欄目設(shè)置、關(guān)鍵詞群組等細(xì)微處著手,突出企業(yè)的產(chǎn)品/服務(wù)/品牌,幫助企業(yè)鎖定精準(zhǔn)用戶,提高在線咨詢和轉(zhuǎn)化,使成都網(wǎng)站營銷成為有效果、有回報(bào)的無錫營銷推廣。創(chuàng)新互聯(lián)專業(yè)成都網(wǎng)站建設(shè)十年了,客戶滿意度97.8%,歡迎成都創(chuàng)新互聯(lián)客戶聯(lián)系。假如有兩個(gè)方法A和B,A調(diào)用B,這兩個(gè)方法上都加了事物,究竟使用哪個(gè)事物?
Public void A(){
B();
}
這就是spring事物傳播行為要解決的問題。
在spring中有七種事務(wù)傳播行為。
簡單介紹一下這七種方式(如果不懂不用糾結(jié),后面詳細(xì)介紹)
常用:
REQUIRED:如果當(dāng)前沒有事務(wù),就新建一個(gè)事務(wù),如果已經(jīng)存在一個(gè)事務(wù)中,加入到這個(gè)事務(wù)中,一般的選擇(默認(rèn)值)
REQUIRES_NEW : 新建事務(wù),如果當(dāng)前在事務(wù)中,把當(dāng)前事務(wù)掛起。
我們重點(diǎn)介紹一下常用的兩種:
一:
數(shù)據(jù)訪問層:
@Repository("accountDao")
public class AccountDaoImpl{
updateAccount(Account account) { jdbcTemplate.update(,account.getMoney(),account.getId()); }
}
業(yè)務(wù)邏輯層:
@Service("accountService")
public class AccountServiceImpl{
@Transactional(propagation=Propagation.REQUIRED)
transfer(Account source, Account target, Float money) { source.setMoney(source.getMoney()-money);target.setMoney(target.getMoney()+money);.updateAccount(source); .updateAccount(target); }
@Transactional(propagation=Propagation.REQUIRED)
transferException(Account source, Account target, Float money) { source.setMoney(source.getMoney()-money);target.setMoney(target.getMoney()+money);.updateAccount(source); i=1/0; .updateAccount(target); }
}
測(cè)試:
@Test public voidtestDo(){ serviceImpl.transfer("%張%","%李%",1000f);
serviceImpl.transferException ("%張%","%李%",2000f);
int I = 1/0; }
現(xiàn)在測(cè)試的方法testDo上沒有加事務(wù),當(dāng)它調(diào)用serviceImpl.transfer()方法的時(shí)候,因?yàn)閠ransfer使用REQUIRED修飾,所以transfer會(huì)新建一個(gè)事務(wù),自己獨(dú)立在該事務(wù)執(zhí)行,成功轉(zhuǎn)賬1000,張三賬戶1000,李四4000。當(dāng)調(diào)用serviceImpl.transferException時(shí)新建事務(wù),在執(zhí)行該方法時(shí)發(fā)生異常,事務(wù)回滾,所以轉(zhuǎn)賬不成功,張三賬戶1000,李四4000,此時(shí)這兩個(gè)方法都是在自己的事務(wù)中獨(dú)立執(zhí)行。
@Test
public voidtestDo(){ serviceImpl.transfer("%張%","%李%",1000f);
serviceImpl.transferException ("%張%","%李%",2000f);
}
當(dāng)它調(diào)用serviceImpl.transfer()方法的時(shí)候transfer方法和transferException方法加入到testDo方法的事務(wù)中,他們都在一個(gè)事務(wù),當(dāng)發(fā)生異常的時(shí)候事務(wù)回滾,轉(zhuǎn)賬1000和2000都不成功,張三賬戶2000,李四3000。
二::
測(cè)試:
@Test public voidtestDo(){ serviceImpl.transfer("%張%","%李%",1000f);
serviceImpl.transferException ("%張%","%李%",2000f);
int I = 1/0; }
關(guān)于Spring事務(wù)傳播行為的實(shí)現(xiàn)方式就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果喜歡這篇文章,不如把它分享出去讓更多的人看到。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)站標(biāo)題:Spring事務(wù)傳播行為是什么?怎么用-創(chuàng)新互聯(lián)
文章來源:http://aaarwkj.com/article28/ishjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、外貿(mào)建站、營銷型網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、定制開發(fā)、用戶體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)