1. 程式人生 > >關於Spring的一些面試問題

關於Spring的一些面試問題

1、 什麼是spring\springmvc?二者異同點?

Spring是針對JavaSE/JavaEE的一站式輕量級開源框架,主要應用於java開發。
Springmvc是一個類似Struts的mvc框架,隸屬於spring,需要spring工具包的支援。

2、 為什麼使用spring?(spring的作用)

1.降低耦合度(IOC)
2.增強內聚性(AOP)
3.輕量級,佔用資源較少
4.相容性好,能與其他優秀框架,Struts,hibernate,mybatis
5.非侵入式,spring應用中的物件不依賴spring中的特定類
6.方便測試,spring支援JUnit4,可通過註解進行測試
7.宣告式事務的支援,只需通過配置就能完成對事務的管理,無需手動程式設計

3、 對spring的個人理解

舉一個列子:要生產一個高30cm手持槍械有胳膊有腿的塑料小人,傳統方法是先生產模型,之後一點點澆築成型,雖然能夠達到要求但可操作性不好,過程繁瑣;如果換一種方法,讓設計師將小人拆解成一個個零件(各個物件),在圖紙上確定如何拼接(xml檔案),告訴他我需要一個頭,一個身體和一把槍,我們可以先把一部分零件拼成頭部,一部分零件拼成身體,最後在合到一起即可,不需要像澆築那樣,從下至上一步步依賴(DI&IOC)。如果日後發生新的需求,比如要求手裡拿的是劍不是槍,傳統方法就只能重新做,而如今我可在製作的時候就身上留下可拆卸可擴充套件的節點,只需要將拿劍的地方加上一把劍即可,不影響小人本身(AOP)

4、 什麼是bean?

Bean就是spring配置時的根元素.

5、 講解一下AOP?

所謂aop就是面向物件程式設計OOP的延伸,面向切面程式設計,其核心有以下幾點:
1、橫切關注點:即我們要在什麼地方做攔截,攔截之後要做什麼
2、切面:即橫切關注點的物件
3、連線點:Spring中連線點即被攔截的方法(整個方法定義為連線點)
4、切入點:pointCut,連線點對於攔截的定義(呼叫此方法觸發攔截的行為)
5、通知:即攔截到連線點之後要執行的程式碼,分為前置、後置、異常、最- 終、環繞
6、目標物件:代理的目標物件
7、織入:將切面應用到目標物件並導致代理建立物件的過程
8、引入:在不修改程式碼的情況下,引入可以為執行期的類動態地新增一些方法和Field

6、 DI依賴注入的過程?

1.載入xml檔案
2.使用SAX解析獲取xml根節點,讀取每一個元素及其下屬子元素.
3.根據2獲取的元素,讀取classname使用反射機制和newinstance方法例項化所有bean
4.判斷所有元素是否有注入屬性,獲取被注入的bean的所有屬性,被注入bean的ref值與注入bean的name值相同就獲取被注入bean的set方法(getWriteMethod),獲取private許可權(setAccessible(true)),之後使用反射機制向被注入bean中注入bean屬性。

7、 對bean的理解?

8、 Spring中獲取bean的方式?

9、 Bean的生命週期?\servlet的生命週期?

1.例項化物件
2.封裝屬性
3.SetBeanName
4.設定工廠或者上下文物件
5.執行前處理bean
6.執行屬性配置後操作
7.執行後處理bean方法
8.執行指定例項化操作
9.執行業務處理
10.銷燬
11.執行指定銷燬方法

10、 Spring的核心是什麼?

IOC,AOP,DI