天天看點

史上最全Spring相關面試題(五)

點選上方 "JAVA開發大學營"關注, 置頂或星标一起學習

每天晚上10點00分, 我們不見不散

導讀

小編将每天整理10道經典,系統化的面試題,讓你進行學習。

每天雞湯

不要去聽别人的忽悠,你人生的每一步都必須靠自己的能力完成。自己肚子裡沒有料,手上沒本事,認識再多人也沒用。

責任編輯:濤哥

史上最全Spring相關面試題(五)
史上最全Spring相關面試題(五)

史上最全Spring相關面試題(一)

史上最全Spring相關面試題(二)

史上最全Spring相關面試題(三)

史上最全Spring相關面試題(四)

四十一、在Spring架構中如何更有效地使用JDBC? 

參考回答:

使用SpringJDBC 架構,資源管理和錯誤處理的代價都會被減輕。是以開發者隻需寫statements 和 queries從資料存取資料,JDBC也可以在Spring架構提供的模闆類的幫助下更有效地被使用,這個模闆叫JdbcTemplate (例子見這裡here)

四十二、Spring支援的事務管理類型?

參考回答:

Spring支援兩種類型的事務管理:

(1)程式設計式事務管理:這意味你通過程式設計的方式管理事務,給你帶來極大的靈活性,但是難維護。

(2)聲明式事務管理:這意味着你可以将業務代碼和事務管理分離,你隻需用注解和XML配置來管理事務。

四十三、Spring架構的事務管理有哪些優點?

參考回答:

(1)它為不同的事務API  如 JTA,JDBC,Hibernate,JPA 和JDO,提供一個不變的程式設計模式。

(2)它為程式設計式事務管理提供了一套簡單的API而不是一些複雜的事務API。

(3)它支援聲明式事務管理。

(4)它和Spring各種資料通路抽象層很好的內建。

四十四、你更傾向用那種事務管理類型?

參考回答:

大多數Spring架構的使用者選擇聲明式事務管理,因為它對應用代碼的影響最小,是以更符合一個無侵入的輕量級容器的思想。聲明式事務管理要優于程式設計式事務管理,雖然比程式設計式事務管理(這種方式允許你通過代碼控制事務)少了一點靈活性。

四十五、Spring事務的配置有幾種不同的方式

參考回答:

(1)每個Bean都有一個代理

(2)所有Bean共享一個代理基類

(3)使用攔截器

(4)使用tx标簽配置的攔截器

(5)全注解

四十六、事務注解在類/方法上的優先級以及你對事務注解使用的一些建議。

參考回答:

如果在接口、實作類或方法上都指定了@Transactional 注解,則優先級順序為:

方法>實作類>接口;

建議隻在實作類或實作類的方法上使用@Transactional,而不要在接口上使用,這是因為如果使用JDK代理機制(基于接口的代理)是沒問題;

而使用使用CGLIB代理(繼承)機制時就會遇到問題,因為其使用基于類的代理而不是接口,這是因為接口上的@Transactional注解是“不能繼承的”;

四十七、事務的復原規則

參考回答:

預設隻把RuntimeException及其子類标記為復原,Error預設也導緻復原。Checked Exceptions預設不導緻復原。這些規則和EJB是一樣的。

四十八、為何有時@Transactional不生效

參考回答:

隻有@Transactional 注解應用到 public 方法,才能進行事務管理。

這是因為在使用 Spring AOP 代理時,Spring 在調用 TransactionInterceptor 在目标方法執行前後進行攔截之前,DynamicAdvisedInterceptor(CglibAopProxy 的内部類)的 intercept 方法或 JdkDynamicAopProxy 的 invoke 方法會間接調用 AbstractFallbackTransactionAttributeSource(Spring 通過這個類擷取@Transactional 注解的事務屬性配置屬性資訊)的 computeTransactionAttribute 方法。

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

注意:即使你的方法是public的,但是如果被private的方法調用,@Transactional注解同樣也會失效

四十九、Spring事務三要素

參考回答:

資料源:表示具體的事務性資源,是事務的真正處理者,如MySQL等。

事務管理器:像一個大管家,從整體上管理事務的處理過程,如打開、送出、復原等。

事務應用和屬性配置:像一個辨別符,表明哪些方法要參與事務,如何參與事務,以及一些相關屬性如隔離級别、逾時時間等。

五十、邏輯事務與實體事務

參考回答:

事務性資源實際打開的事務就是實體事務,如資料庫的Connection打開的事務。Spring會為每個@Transactional方法建立一個事務範圍,可以了解為是邏輯事務。

在邏輯事務中,大範圍的事務稱為外圍事務,小範圍的事務稱為内部事務,外圍事務可以包含内部事務,但在邏輯上是互相獨立的。每一個這樣的邏輯事務範圍,都能夠單獨地決定rollback-only狀态。

那麼如何處理邏輯事務和實體事務之間的關聯關系呢,這就是傳播特性解決的問題。

史上最全Spring相關面試題(五)
史上最全Spring相關面試題(五)

掃碼關注最新動态

關鍵時刻,第一時間送達

史上最全Spring相關面試題(五)

- END -

點個在看是最大的支援 

史上最全Spring相關面試題(五)

繼續閱讀