首頁 >Java >Java面試題 >2020全新Java面試題目-Spring(二)

2020全新Java面試題目-Spring(二)

王林
王林轉載
2020-06-28 17:24:592492瀏覽

2020全新Java面試題目-Spring(二)

一、spring 中的 bean 是執行緒安全的嗎?

(相關推薦:java面試題

Spring容器中的Bean是否線程安全,容器本身並沒有提供Bean的線程安全策略,因此可以說spring容器中的Bean本身不具備線程安全的特性,但具體還是要結合具體scope的Bean去研究。

二、spring 支援幾個 bean 的作用域?

當透過spring容器建立一個Bean實例時,不僅可以完成Bean實例的實例化,還可以為Bean指定特定的作用域。 Spring支援如下5種作用域:

singleton:單例模式,在整個Spring IoC容器中,使用singleton定義的Bean將只有一個實例

prototype:原型模式,每次通過容器的getBean方法取得prototype定義的Bean時,都會產生一個新的Bean實例

request:對於每次HTTP請求,使用request定義的Bean都會產生一個新實例,即每次HTTP請求將會產生不同的Bean實例。只有在Web應用中使用Spring時,此作用域才有效

session:對於每次HTTP Session,使用session定義的Bean豆漿產生一個新實例。同樣只有在Web應用中使用Spring時,該作用域才有效

globalsession:每個全域的HTTP Session,使用session定義的Bean都會產生一個新實例。典型情況下,僅在使用portlet context的時候有效。同樣只有在Web應用中使用Spring時,此作用域才有效

其中比較常用的是singleton和prototype兩種作用域。對於singleton作用域的Bean,每次請求該Bean都將獲得相同的實例。容器負責追蹤Bean實例的狀態,負責維護Bean實例的生命週期行為;

如果一個Bean被設定成prototype作用域,程式每次要求該id的Bean,Spring都會新建一個Bean實例,然後返回給程式。在這種情況下,Spring容器僅使用new 關鍵字建立Bean實例,一旦建立成功,容器不在追蹤實例,也不會維護Bean實例的狀態。

如果不指定Bean的作用域,Spring預設使用singleton作用域。

Java在建立Java實例時,需要進行記憶體申請;銷毀實例時,需要完成垃圾回收,這些工作都會導致系統開銷的增加。因此,prototype作用域Bean的創建、銷毀代價比較大。而singleton作用域的Bean實例一旦建立成功,可以重複使用。

因此,除非必要,否則盡量避免將Bean被設定成prototype作用域。

三、spring 自動組裝 bean 有哪些方式?

Spring容器負責創建應用程式中的bean同時透過ID來協調這些物件之間的關係。作為開發人員,我們需要告訴Spring要創建哪些bean並且如何將其組裝在一起。

spring中bean裝配有兩種方式:

1、隱式的bean發現機制和自動組裝

2、在java程式碼或XML中進行顯示配置

當然這些方式也可以搭配使用。

四、spring 事務實作方式有哪些?

編程式事務管理對基於 POJO 的應用程式來說是唯一選擇。我們需要在程式碼中呼叫beginTransaction()、commit()、rollback()等事務管理相關的方法,這就是編程式事務管理。

基於TransactionProxyFactoryBean 的聲明式事務管理

基於@Transactional 的聲明式事務管理

基於Aspectj AOP 配置事務

#五、說一下spring 的事務隔離?

事務隔離等級指的是一個事務對資料的修改與另一個並行的事務的隔離程度,當多個事務同時存取相同資料時,如果沒有採取必要的隔離機制,就可能發生以下問題:

髒讀:一個交易讀到另一個交易未提交的更新資料。

幻讀:例如第一個交易對一個表中的資料進行了修改,例如這種修改涉及到表中的「全部資料行」。同時,第二個事務也修改這個表中的數據,這種修改是向表中插入「一行新數據」。

那麼,以後就會發生操作第一個交易的使用者發現表中還存在沒有修改的資料行,就好像發生了幻覺一樣。

不可重複讀:比方說在同一個事務中先後執行兩條一模一樣的select語句,期間在此次事務中沒有執行過任何DDL語句,但先後得到的結果不一致,這就是不可重複讀。

以上是2020全新Java面試題目-Spring(二)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除