天天看點

spring面試題 對DI , AOP概念的了解

今天有一哥們去面試 ,哥們說自己會ssh

面試官就問了幾個spring的概念性的問題 ,哥們平時隻專注于寫代碼,回來後一臉的無奈

本人總結了一些ssh常見的面試題 例舉如下

強調在回答的時候不要光回答概念,要思維擴散性的講些相關的東西

spring 的優點?

1.降低了元件之間的耦合性 ,實作了軟體各層之間的解耦

2.可以使用容易提供的衆多服務,如事務管理,消息服務等

3.容器提供單例模式支援

4.容器提供了AOP技術,利用它很容易實作如權限攔截,運作期監控等功能

5.容器提供了衆多的輔助類,能加快應用的開發

6.spring對于主流的應用架構提供了內建支援,如hibernate,JPA,Struts等

7.spring屬于低侵入式設計,代碼的污染極低

8.獨立于各種應用伺服器

9.spring的DI機制降低了業務對象替換的複雜性

10.Spring的高度開放性,并不強制應用完全依賴于Spring,開發者可以自由選擇spring的部分或全部

什麼是DI機制?

依賴注入(Dependecy Injection)和控制反轉(Inversion of Control)是同一個概念,具體的講:當某個角色

需要另外一個角色協助的時候,在傳統的程式設計過程中,通常由調用者來建立被調用者的執行個體。但在spring中

建立被調用者的工作不再由調用者來完成,是以稱為控制反轉。建立被調用者的工作由spring來完成,然後注入調用者

是以也稱為依賴注入。

spring以動态靈活的方式來管理對象 , 注入的兩種方式,設定注入和構造注入。

設定注入的優點:直覺,自然

構造注入的優點:可以在構造器中決定依賴關系的順序。

什麼是AOP?

面向切面程式設計(AOP)完善spring的依賴注入(DI),面向切面程式設計在spring中主要表現為兩個方面

1.面向切面程式設計提供聲明式事務管理

2.spring支援使用者自定義的切面

面向切面程式設計(aop)是對面向對象程式設計(oop)的補充,

面向對象程式設計将程式分解成各個層次的對象,面向切面程式設計将程式運作過程分解成各個切面。

AOP從程式運作角度考慮程式的結構,提取業務處理過程的切面,oop是靜态的抽象,aop是動态的抽象,

是對應用執行過程中的步驟進行抽象,,進而獲得步驟之間的邏輯劃分。