Spring IOC 和 AOP
阿新 • • 發佈:2018-11-14
文件 編程思想 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