Spring IOC(控制反轉)和DI(依賴注入)、AOP
IOC
Ioc(Inversion of Control)翻譯成中文就是“控制反轉”,一個比較晦澀的詞語。如果要真正理解這個詞語,必須要用過Spring框架才行,因為Spring開啟了一種新的程式設計方式。
傳統的程式設計方式: 所有的物件和資源都是由開發人員來控制,由你來決定什麼時候new一個物件,什麼時候申請資源、使用資源、釋放資源。
使用Spring框架: 開發人員提供一個清單給Spring,然後物件的整個生命週期都是由Spring框架來管理,一個物件中引用的資源、引用的其他物件也都是由Spring框架來管理。
深入剖析一下“控制反轉”這個詞:
控制: 控制指的是控制外部資源的獲取、控制物件的生命週期。
反轉: 剛開始流行的是由開發人員操縱一切,現在變了,由Spring框架來控制程式中的外部資源、控制物件的生命週期等。所以取名“反轉”,即控制的權利由開發人員轉移到了Spring框架。由Spring框架幫我建立我們物件中依賴的物件,我們的物件只能被動的接受。
IOC的好處就是解耦,物件和物件之間的耦合度變低了,便於測試、便於功能複用。
DI
DI(Dependency Injection)翻譯成中文叫做“依賴注入”,既然物件的整個生命週期都是由Spring框架來維護的,那麼我的這個物件中引用了另一個物件,你打算怎麼辦?Spring框架自然考慮到這一點了。“依賴注入”這兩個詞語也要拆開來講:
依賴: 我的A物件中引用了B物件,也就是說A物件依賴B物件。你要通過配置檔案告訴Spring你的物件之間的依賴關係。
注入: 你的物件已經交給Spring管理了,你也告訴Spring你的物件之間的依賴關係了,那麼在合適的時候,由Spring把你依賴的其他物件(或者資源、常量等)注入給你。
總結就是,把所有的控制權交給Spring,由Spring幫你建立物件、幫你維護物件之間的依賴關係。
AOP
AOP為面向切面程式設計,在傳統的OOP開發過程中,對於一個模組我們分為資料訪問層,邏輯層,Action層,jsp檢視層,但是在多個模組中需要加入日誌管理、許可權管理等非業務性功能的時候,就會使得程式碼存在大量的冗餘,也不方便管理,這個時間就該使用AOP程式設計,它
是以一種在各個模組中某個切面中加入同樣的功能,就好像struts中的攔截器,但是攔截器只能在Action中,AOP可以再任意的功能層中
使用。AOP降低了類之間的的耦合性和冗餘,提高了類的重用性和擴充套件型,使用時在配置檔案中加入配置,實現切面類,在類裡定義好
需要定義切面,接入點,之前,之後,最後,異常,以及最重要的環繞