1. 程式人生 > >Spring IOC 和 AOP

Spring IOC 和 AOP

文件 編程思想 dep nbsp 織入 擴展 con 集中管理 重復

一.  IOC

  1. 概念及原理

  IOC: Inversion of Control(控制反轉)是一種設計思想,就是容器控制應用程序所需要的外部資源的創建和管理,然後將其反轉給應用程序.對象及其依賴對象的創建及維護都不需要在應用程序中實現,將其交給IOC容器去管理.傳統的開發中,我們自己在對象內部創建依賴對象註入當前對象,完成依賴關系的維護;對於IOC而言,他強調是將主動變為被動,由IOC容器來負責依賴對象的創建和查找,由IOC容器來進行註入組合對象,我們只需要在相關的配置文件中維護對象的依賴關系即可.

  DI: Dependency Injecton,即"依賴註入".其實IOC和DI本就是同一個概念的兩種不同的表述,應用程序依賴容器提供的外部對象,容器將其依賴的外部資源在運行期註入到應用程序中;某個對象被調用時,其所依賴的對象由容器註入;

  2. 優點

  第一: 資源集中管理,實現資源的可配置和易管理,降低對象關系維護的復雜度.

  第二: 降低了使用資源雙方的依賴程度,也就是我們說的耦合度.

二.  AOP

  1. 概念

  AOP面向切面,是一種編程思想,AOP將軟件系統分為兩個部分,核心業務和擴展業務,在不改變原有代碼的基礎上,給核心業務添加擴展功能,即OCP原則.

  2. 實現方式

  實現AOP的技術,主要分為兩大類:

  一 是采用動態代理技術,利用截取消息的方式,對該消息進行裝飾,以取代原有對象行為的執行;

  二 是采用靜態織入的方式,引入特定的語法創建"方面",從而使得編譯器可以再編譯期間織入有關"方面"的代碼.

  3.優點

  一. 橫切關註點的代碼都集中於一塊,而不是分散在各個業務組件中,不會出現大量代碼重復;

  二. 核心模塊只關註核心功能的代碼,與通用模塊分離,模塊間耦合度降低.

Spring IOC 和 AOP