Spring IOC/DI和AOP原理


一 IOC/DI

  1. 概念及原理

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

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

  2. 優點

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

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

 

二 AOP

  1. 概念和原理

  AOP利用一種稱為“橫切”的技術,剖解開封裝的對象內部,將那些影響多個類的公共行為封裝到一個可重用模塊,並將其名為方面(Aspect)。所謂“方面”,簡單地說,就是將那些與業務無關,卻為業務模塊所共同調用的邏輯封裝起來的部分。以便於減少系統的重復代碼,降低模塊間的耦合度,並有利於系統維護。

  使用“橫切”技術,AOP把軟件系統分為兩個部分:核心關注點(業務邏輯)和橫切關注點(通用邏輯,即方面)。業務處理的主要流程是核心關注點,與之關系不大的部分是橫切關注點。橫切關注點的特點是,其經常發生在核心關注點的多處,而各處都基本相似。比如權限認證、日志、事務處理,debug管理,性能檢測等。AOP 的作用在於分離系統中的各種關注點,將核心關注點和橫切關注點分離開來。

  2. 實現方式

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

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

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

  3. 優點

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

  ②.核心模塊只關注核心功能的代碼,與通用模塊分離,模塊間藕合度降低。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM