1. 程式人生 > >Spring框架核心解析

Spring框架核心解析

Spring是一個輕量級的、非侵入式的容器框架;對Bean物件的生命週期進行管理。

Spring框架的核心:IOC(控制反轉)、DI(依賴注入)、AOP(面向切面程式設計)。

(1) IOC:控制反轉。

                      傳統的Java開發過程中,當需要一個物件的時候,我們需要自己new或者getInstance等直接或間接呼叫構造方法建立一個物件;而在Spring容器中,Spring容器利用  工廠模式(BeanFactory)為我們建立了所需要的物件,使用時無須自己建立,直接呼叫Spring為我們建立的物件即可,這就是控制反轉的思想。

                      優點:簡化了我們對物件的管理,交給了Spring管理;程式設計師不用再自己建立物件,需要時直接從Spring中取。由主動建立物件變成了被動接收物件,控制權反轉,減輕了程式設計師的程式碼量,提高了開發效率。打個比方:IOC就像現在得訂餐APP,以前我們吃飯需要自己去做,去New一頓飯出來;現在我們有了訂餐APP(Spring),我們只需要登入這個APP,在APP訂餐頁面applicationtext.xml(Spring配置檔案)填寫你想吃的飯(也就是Bean物件),然後就可以預定你要吃的飯,想要豬頭肉就會給你送豬頭肉,想要紅燒肉就會送紅燒肉;各種菜就像是Property,這樣我們坐在家中就可以吃到飯了,不用自己再動手去做了。

(2)DI:依賴注入。

                     Spring框架為我們提供了三種注入方式,分別是set注入,構造方法注入,介面注入。

                     Spring使用JavaBean物件的Set方法或者帶引數的構造方法為我們建立所需要的物件時將其屬性自動設定為所需要的值的過程就是依賴注入的思想。

                     優點:有了Spring容器,當我們想要建立一個Service時,就可以直接從Spring容器中拿;或者想在Service中呼叫Dao也不需要在Service裡建立,因為Spring會從容器中取出Dao,並注入到Service裡,也就是依賴注入。

(3)AOP:面向切面程式設計。

                      在面向物件程式設計(OOP)中,我們將事物縱向抽象成一個個的物件。而在面向切面程式設計中,我們將一個個物件某些類似的方面橫向抽象成一個切面,對這個切面進行一些如:許可權驗證,事務管理,記錄日誌等公用操作處理的過程就是面向切面程式設計的思想。

總結:使用Spring的目的:就是讓物件與物件或者模組與模組之間的關係沒有通過程式碼關聯,都是通過配置類說明管理的(Spring根據這些配置內部通過反射去動態的組裝物件)。

注:控制反轉和依賴注入的簡單理解:

控制反轉IOC:當某個角色需要呼叫另一個角色的協助時,在傳統的程式設計中,通常由呼叫者建立被呼叫者的例項,如果建立被呼叫者例項的工作 不再由呼叫者來完成,而是由外部容器來完成。

依賴注入DI:建立被呼叫者例項的工作通常由外部容器來完成,然後注入呼叫者,因此也稱為依賴注入。