大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) java中Spring事務(wù)面試題考點整理

java中Spring事務(wù)面試題考點整理

更新時間:2020-06-10 12:15:48 來源:動力節(jié)點 瀏覽4894次

java面試題中,Spring事務(wù)面試題也是很重要的,動力節(jié)點java培訓(xùn)機構(gòu)的小編就為大家整理了一些Spring事務(wù)面試考點,希望對大家能夠有所幫助。

java事務(wù)面試題

1、Spring和事務(wù)的關(guān)系

關(guān)系型數(shù)據(jù)庫、某些消息隊列等產(chǎn)品或中間件稱為事務(wù)性資源,因為它們本身支持事務(wù),也能夠處理事務(wù)。

Spring很顯然不是事務(wù)性資源,但是它可以管理事務(wù)性資源,所以Spring和事務(wù)之間是管理關(guān)系。

就像Jack Ma雖然不會寫代碼,但是他卻管理者一大批會寫代碼的碼農(nóng)。

2、Spring事務(wù)三要素

數(shù)據(jù)源:表示具體的事務(wù)性資源,是事務(wù)的真正處理者,如MySQL等。

事務(wù)管理器:像一個大管家,從整體上管理事務(wù)的處理過程,如打開、提交、回滾等。

事務(wù)應(yīng)用和屬性配置:像一個標(biāo)識符,表明哪些方法要參與事務(wù),如何參與事務(wù),以及一些相關(guān)屬性如隔離級別、超時時間等。

3、Spring事務(wù)的注解配置

把一個DataSource(如DruidDataSource)作為一個@Bean注冊到Spring容器中,配置好事務(wù)性資源。

把一個@EnableTransactionManagement注解放到一個@Configuration類上,配置好事務(wù)管理器,并啟用事務(wù)管理。

把一個@Transactional注解放到類上或方法上,可以設(shè)置注解的屬性,表明該方法按配置好的屬性參與到事務(wù)中。

4、事務(wù)注解的本質(zhì)

@Transactional這個注解僅僅是一些(和事務(wù)相關(guān)的)元數(shù)據(jù),在運行時被事務(wù)基礎(chǔ)設(shè)施讀取消費,并使用這些元數(shù)據(jù)來配置bean的事務(wù)行為。

大致來說具有兩方面功能,一是表明該方法要參與事務(wù),二是配置相關(guān)屬性來定制事務(wù)的參與方式和運行行為。

5、Spring聲明式事務(wù)實現(xiàn)原理

聲明式事務(wù)成為可能,主要得益于Spring AOP。使用一個事務(wù)攔截器,在方法調(diào)用的前后/周圍進(jìn)行事務(wù)性增強(advice),來驅(qū)動事務(wù)完成。

6、如何回滾一個事務(wù)

就是在一個事務(wù)上下文中當(dāng)前正在執(zhí)行的代碼里拋出一個異常,事務(wù)基礎(chǔ)設(shè)施代碼會捕獲任何未處理的異常,并且做出決定是否標(biāo)記這個事務(wù)為回滾。

7、默認(rèn)回滾規(guī)則

默認(rèn)只把runtime, unchecked exceptions標(biāo)記為回滾,即RuntimeException及其子類,Error默認(rèn)也導(dǎo)致回滾。Checked exceptions默認(rèn)不導(dǎo)致回滾。這些規(guī)則和EJB是一樣的。

8、如何配置回滾異常

使用@Transactional注解的rollbackFor/rollbackForClassName屬性,可以精確配置導(dǎo)致回滾的異常類型,包括checked exceptions。

noRollbackFor/noRollbackForClassName屬性,可以配置不導(dǎo)致回滾的異常類型,當(dāng)遇到這樣的未處理異常時,照樣提交相關(guān)事務(wù)。

9、事務(wù)注解在類/方法上

@Transactional注解既可以標(biāo)注在類上,也可以標(biāo)注在方法上。當(dāng)在類上時,默認(rèn)應(yīng)用到類里的所有方法。如果此時方法上也標(biāo)注了,則方法上的優(yōu)先級高。

10、事務(wù)注解在類上的繼承性

@Transactional注解的作用可以傳播到子類,即如果父類標(biāo)了子類就不用標(biāo)了。但倒過來就不行了。

子類標(biāo)了,并不會傳到父類,所以父類方法不會有事務(wù)。父類方法需要在子類中重新聲明而參與到子類上的注解,這樣才會有事務(wù)。

11、事務(wù)注解在接口/類上

@Transactional注解可以用在接口上,也可以在類上。在接口上時,必須使用基于接口的代理才行,即JDK動態(tài)代理。

事實是Java的注解不能從接口繼承,如果你使用基于類的代理,即CGLIB,或基于織入方面,即AspectJ,事務(wù)設(shè)置不會被代理和織入基礎(chǔ)設(shè)施認(rèn)出來,目標(biāo)對象不會被包裝到一個事務(wù)代理中。

Spring團(tuán)隊建議注解標(biāo)注在類上而非接口上。

12、只在public方法上生效?

當(dāng)采用代理來實現(xiàn)事務(wù)時,(注意是代理),@Transactional注解只能應(yīng)用在public方法上。當(dāng)標(biāo)記在protected、private、package-visible方法上時,不會產(chǎn)生錯誤,但也不會表現(xiàn)出為它指定的事務(wù)配置。可以認(rèn)為它作為一個普通的方法參與到一個public方法的事務(wù)中。

如果想在非public方法上生效,考慮使用AspectJ(織入方式)。

13、目標(biāo)類里的自我調(diào)用沒有事務(wù)?

在代理模式中(這是默認(rèn)的),只有從外部的方法調(diào)用進(jìn)入通過代理會被攔截,這意味著自我調(diào)用(實際就是,目標(biāo)對象中的一個方法調(diào)用目標(biāo)對象的另一個方法)在運行時不會導(dǎo)致一個實際的事務(wù),即使被調(diào)用的方法標(biāo)有注解。

如果你希望自我調(diào)用也使用事務(wù)來包裝,考慮使用AspectJ的方式。在這種情況下,首先是沒有代理。相反,目標(biāo)類被織入(即它的字節(jié)碼被修改)來把@Transactional加入到運行時行為,在任何種類的方法上都可以。

14、事務(wù)與線程

和JavaEE事務(wù)上下文一樣,Spring事務(wù)和一個線程的執(zhí)行相關(guān)聯(lián),底層是一個ThreadLocal,就是每個線程一個map,key是DataSource,value是Connection。

15、邏輯事務(wù)與物理事務(wù)

事務(wù)性資源實際打開的事務(wù)就是物理事務(wù),如數(shù)據(jù)庫的Connection打開的事務(wù)。Spring會為每個@Transactional方法創(chuàng)建一個事務(wù)范圍,可以理解為是邏輯事務(wù)。

在邏輯事務(wù)中,大范圍的事務(wù)稱為外圍事務(wù),小范圍的事務(wù)稱為內(nèi)部事務(wù),外圍事務(wù)可以包含內(nèi)部事務(wù),但在邏輯上是互相獨立的。每一個這樣的邏輯事務(wù)范圍,都能夠單獨地決定rollback-only狀態(tài)。

那么如何處理邏輯事務(wù)和物理事務(wù)之間的關(guān)聯(lián)關(guān)系呢,這就是傳播特性解決的問題。

16、事務(wù)的傳播特性

REQUIRED,SUPPORTS,MANDATORY,REQUIRES_NEW,NOT_SUPPORTED,NEVER,NESTED

REQUIRED

強制要求要有一個物理事務(wù)。如果沒有已經(jīng)存在的事務(wù),就專門打開一個事務(wù)用于當(dāng)前范圍。或者參與到一個已存在的更大范圍的外圍事務(wù)中。在相同的線程中,這是一種很好的默認(rèn)方式安排。(例如,一個service外觀/門面代理到若干個倉儲方法,所有底層資源必須參與到service級別的事務(wù)里)

在標(biāo)準(zhǔn)的REQUIRED行為情況下,所有這樣的邏輯事務(wù)范圍映射到同一個物理事務(wù)。因此,在內(nèi)部事務(wù)范圍設(shè)置了rollback-only標(biāo)記,確實會影響外圍事務(wù)進(jìn)行實際提交的機會。

注:默認(rèn),一個參與到外圍事務(wù)的事務(wù),會使用外圍事務(wù)的特性,安靜地忽略掉自己的隔離級別,超時值,只讀標(biāo)識等設(shè)置。當(dāng)然可以在事務(wù)管理器上設(shè)置validateExistingTransactions標(biāo)識為true,這樣當(dāng)你自己的事務(wù)和參與到的外圍事務(wù)設(shè)置不一樣時會被拒絕。

REQUIRES_NEW

與REQUIRED相比,總是使用一個獨立的物理事務(wù)用于每一個受影響的邏輯事務(wù)范圍,從來不參與到一個已存在的外圍事務(wù)范圍。這樣安排的話,底層的事務(wù)資源是不同的,因此,可以獨立地提交或回滾。外圍事務(wù)不會被內(nèi)部事務(wù)的回滾狀態(tài)影響。這樣一個獨立的內(nèi)部事務(wù)可以聲明自己的隔離級別,超時時間和只讀設(shè)置,并不繼承外圍事務(wù)的特性。

NESTED

使用同一個物理事務(wù),帶有多個保存點,可以回滾到這些保存點,可以認(rèn)為是部分回滾,這樣一個內(nèi)部事務(wù)范圍觸發(fā)了一個回滾,外圍事務(wù)能夠繼續(xù)這個物理事務(wù),盡管有一些操作已經(jīng)被回滾。典型地,它對應(yīng)于JDBC的保存點,所以只對JDBC事務(wù)資源起作用。

SUPPORTS

支持當(dāng)前事務(wù)。如果當(dāng)前有事務(wù),就參與進(jìn)來,如果沒有,就以非事務(wù)的方式運行。這樣的一個邏輯事務(wù)范圍,它背后可能沒有實際的物理事務(wù),此時的事務(wù)也成為空事務(wù)。

NOT_SUPPORTED

不支持當(dāng)前事務(wù)。總是以非事務(wù)方式運行。當(dāng)前的事務(wù)會被掛起,并在適合的時候恢復(fù)。

MANDATORY

支持當(dāng)前事務(wù)。如果當(dāng)前沒有事務(wù)存在,就拋出異常。

NEVER

不支持當(dāng)前事務(wù)。如果當(dāng)前有事務(wù)存在,就拋出異常。

17、事務(wù)的隔離級別

DEFAULT,READ_UNCOMMITTED,READ_COMMITTED,REPEATABLE_READ,SERIALIZABLE

臟讀

一個事務(wù)修改了一行數(shù)據(jù)但沒有提交,第二個事務(wù)可以讀取到這行被修改的數(shù)據(jù),如果第一個事務(wù)回滾,第二個事務(wù)獲取到的數(shù)據(jù)將是無效的。

不可重復(fù)讀

一個事務(wù)讀取了一行數(shù)據(jù),第二個事務(wù)修改了這行數(shù)據(jù),第一個事務(wù)重新讀取這行數(shù)據(jù),將獲得到不同的值。

幻讀

一個事務(wù)按照一個where條件讀取所有符合的數(shù)據(jù)行,第二個事務(wù)插入了一行數(shù)據(jù)且恰好也滿足這個where條件,第一個事務(wù)再以這個where條件重新讀取,將會獲取額外多出來的這一行。

幫助記憶

寫讀是臟讀,讀寫讀是不可重復(fù)讀,where insert where是幻讀。

DEFAULT

使用底層數(shù)據(jù)存儲的默認(rèn)隔離級別。MySQL的默認(rèn)隔離級別是REPEATABLE-READ。

READ_UNCOMMITTED

讀未提交。臟讀、不可重復(fù)讀、幻讀都會發(fā)生

READ_COMMITTED

讀已提交。臟讀不會發(fā)生,不可重復(fù)讀、幻讀都會發(fā)生。

REPEATABLE_READ

可重復(fù)讀。臟讀、不可重復(fù)讀都不會發(fā)生,幻讀會發(fā)生。

SERIALIZABLE

可串行化。臟讀、不可重復(fù)讀、幻讀都不會發(fā)生。

java中Spring事務(wù)面試題考點整理

以上就是動力節(jié)點java培訓(xùn)機構(gòu)的小編針對“java中Spring事務(wù)面試題考點整理”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 免费在线精品视频 | 欧美xxxxx毛片 | 日本在线一卡二卡毛片 | 中文字幕在线观看一区二区 | 97干干干| 免费一级黄色毛片 | 一区二区在线视频 | 国产精品永久免费自在线观看 | 国产蜜汁tv福利在线 | 久久久久美女 | 夜间福利在线观看 | 亚洲精品久久久久久久久久ty | 一区二区色 | 奇米影视777在线观看 | 欧美日韩视频在线成人 | 免费香蕉一区二区在线观看 | 欧美日韩亚洲精品一区 | 日本黄色绿像 | 日韩毛片最新看 | 国产自产视频 | 91精品久久久久亚洲国产 | 国产精品成人观看视频国产 | 久久精品视频8 | 四虎视频国产精品免费入口 | 日本欧美在线视频 | 天天爽夜夜爽人人爽 | 亚洲美女操| 狠狠色噜狠狠狠狠色综合久 | 天天干在线观看 | 国产一区二区三区亚洲欧美 | 在线亚洲成人 | 视频福利在线 | 日韩精品久久久毛片一区二区 | 亚洲爱婷婷色婷婷五月 | 国产深夜福利19禁在线播放 | 性做久久久久久久免费看 | 日韩欧美第一页 | 国产色在线 | 国产精品免费综合一区视频 | 女人18毛片a级毛片 女人18毛片a级毛片免费 | 97视频免费看 |