Spring常見面試題目

2021-07-04 23:48:35 字數 3062 閱讀 3337

1.使用spring框架的好處是什麼?

輕量:spring 是輕量的,基本的版本大約2mb。

控制反**spring通過控制反轉實現了鬆散耦合,物件們給出它們的依賴,而不是建立或查詢依賴的物件們。

面向切面的程式設計(aop):spring支援面向切面的程式設計,並且把應用業務邏輯和系統服務分開。

容器:spring 包含並管理應用中物件的生命週期和配置。

事務管理:spring 提供乙個持續的事務管理介面,可以擴充套件到上至本地事務下至全域性事務(jta)。

2.說說aop和ioc/di的概念以及在spring中是如何應用的?

aop,aspect oriented program,面向(方面)切面的程式設計;

ioc,invert of control,控制反轉。物件的例項由容器自動生成,

即用介面程式設計,在程式中不出現new關鍵字,而是用介面來命名引用,

然後通過某種方式把介面的某個實現類的例項注入到引用裡,從而實現介面與具體實現類的松耦合。

由容器控制程式之間的關係(通過xml配置),而非傳統實現中的由程式**直接操控,

依賴注入,是ioc的乙個方面,是個通常的概念,它有多種解釋。這概念是說你不用建立物件,

而只需要描述它如何被建立。你不在**裡直接組裝你的元件和服務,但是要在配置檔案裡描述哪些元件需要哪些服務,

之後乙個容器(ioc容器)負責把他們組裝起來。

簡單說一下,ioc就是其實就是依賴注入,

(在乙個class物件中引用另乙個class物件時,我們通常都是直接通過new contructor)。

控制權由應用**中轉到了外部容器,控制權的轉移,是所謂的反轉。

aop方式很類似filter,就是在程式正常的業務流中間像切面一樣插入很多其他需要執行的**,

比如登入時候,在進入登入頁面前寫入日誌,很常用的,尤其是跟資料庫有關的,或者跟支付有關的程式肯定會在每一步前面插入日誌。

面向方面的程式設計,即 aop,是一種程式設計技術,它允許程式設計師對橫切關注點或橫切典型的職責分界線的行為(例如日誌和事務管理)進行模組化。

aop 的核心構造是方面,它將那些影響多個類的行為封裝到可重用的模組中。

aop advice(aop通知)分為:

前置通知   後置通知   異常通知   環繞通知

3.spring的事物有幾種方式?spring框架的事務管理有哪些優點? 你更傾向用那種事務管理型別?談談spring事物的隔離級別和傳播行為?

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

宣告式事務管理:這意味著你可以將業務**和事務管理分離,你只需用註解和xml配置來管理事務。

它為不同的事務api  如 jta,jdbc,hibernate,jpa 和jdo,提供乙個不變的程式設計模式。

它為程式設計式事務管理提供了一套簡單的api而不是一些複雜的事務api如

它支援宣告式事務管理。

它和spring各種資料訪問抽象層很好得整合。

大多數spring框架的使用者選擇宣告式事務管理,因為它對應用**的影響最小,

因此更符合乙個無侵入的輕量級容器的思想。宣告式事務管理要優於程式設計式事務管理,

雖然比程式設計式事務管理(這種方式允許你通過**控制事務)少了一點靈活性。

事務的隔離級別:

資料庫系統提供了4種事務隔離級別,在這4種隔離級別中,serializable的隔離級別最高,read uncommitted的隔離級別最低;

· read uncommitted   讀未提交資料;(會出現髒讀)

· read committed      讀已提交資料;

· repeatable read       可重複讀;

事務的傳播屬性包括:

· required業務方法需要在乙個事務中執行,如果乙個方法執行時已經處在乙個事務中,那麼加入到該事務,否則為自己建立乙個新事務,

80%的方法用到該傳播屬性;

· not-supported· requiresnew· mandatoky· supports· never· nested

4.解釋spring框架中bean的生命週期及spring支援的幾種作用域。

spring容器 從xml 檔案中讀取bean的定義,並例項化bean。

spring根據bean的定義填充所有的屬性。

如果bean實現了beannameaware 介面,spring 傳遞bean 的id 到 setbeanname方法。

如果bean 實現了 beanfactoryaware 介面, spring傳遞beanfactory 給setbeanfactory 方法。

如果有任何與bean相關聯的beanpostprocessors,spring會在postprocesserbeforeinitialization()方法內呼叫它們。

如果bean實現intializingbean了,呼叫它的afterpropertyset方法,如果bean宣告了初始化方法,呼叫此初始化方法。

如果有beanpostprocessors 和bean 關聯,這些bean的postprocessafterinitialization() 方法將被呼叫。

如果bean實現了 disposablebean,它將呼叫destroy()方法。

spring框架支援以下五種bean的作用域:

singleton : bean在每個spring ioc 容器中只有乙個例項。

prototype:乙個bean的定義可以有多個例項。

5.面向切面的原理

spring提供了對aop技術的良好封裝,aop稱為面向切面程式設計,就是系統中有很多各不相干的類的方法,在這些眾多的方法中要加入某種系統功能**,例如:加入日誌、許可權判斷、異常處理等,這種應用成為aop。

實現aop功能採用的是**技術,客戶端程式不再呼叫目標,而呼叫**類,**類與目標類對外具有相同的方法宣告,有兩種方式可以實現相同的方法宣告,一是實現相同的介面,而是作為目標的子類在jdk中採用proxy類產生動態**的方式為某個介面生成實現類,如果要為某類個生成子類,則可以用cglib。(動態**這方面的可以參考我的另一篇文章)

在生成的**類的方法中加入系統功能和呼叫目標類的相應方法,系統功能的**以advice物件進行提供,顯然要建立出**物件,至少需要目標類和advice類。

Spring常見面試題

一 spring mvc工作原理二 為什麼要用spring 1 spring能很好的與各大框架進行整合 2 建立物件時,如果我們不用spring需要用工廠模式來建立,這個spring相當於工廠模式已經幫我們做了建立物件的功能 ioc 依賴注入 3 在用hibernate的時候,如果不用spring每...

Spring常見面試題

spring 面試題分析 1.開發中主要使用 spring 的什麼技術 ioc 容器管理各層的元件 使用 aop 配置宣告式事務 整合其他框架.2.簡 述 aop 和 ioc 概 念 aop aspect oriented program,面向 方面 切面的程式設計 filter 過濾器 也是一種 ...

Spring常見面試題

簡化開發,di依賴關係一目了然,ioc容器管理好系統中的bean 相容成熟的框架,hibernate mybatis shiro 各種資料型別訪問框架 模組化設計,即插即用,按需分配 自帶測試元件 宣告式事務,將非功能性 和功能性 分離,事務管理提前宣告 過度設計嫌疑,完美分離了servlet和普通...