Spring DI IOC && AOP

Spring的核心技術由兩大部分組成:IoC和AOP, IoC即Inversion of Control(控制反轉)的簡寫,它是一種設計模式,Spring只不過是實現了該模式。IoC是工廠模式的昇華,同時涉及到了反射的概念。spring

IoC有多種實現方法,其中,Spring是經過一種名爲DI(Dependency Injection,即依賴注入)的方法實現的。設計模式

IoC(Inversion of Control):爲控制反轉。不建立對象,可是描述建立它們的方式。在代碼中不直接與對象和服務鏈接,但在配置文件中描述哪個組件須要哪一項服務。容器負責將這些聯繫在一塊兒。框架

其原理是基於OO設計原則的The Hollywood Principle:Don't call us, we'll call you(別找我,我會來找你的)。也就是說,全部的組件都是被動的(Passive),全部的組件初始化和調用都由容器負責。組件處在一個容器當中,由容器負責管理。模塊化

簡單的來說,就是由容器控制程序之間的關係,而非傳統實現中,由程序代碼直接操控。這也就是所謂「控制反轉」的概念所在:控制權由應用代碼中轉到了外部容器,控制權的轉移,是所謂反轉。oop

 Spring IoC容器實現了IoC設計模式設計

 1. BeanFactory:位於org.springframework.beans.factory包中。藉助於配置文件實現對JavaBean的配置和管理。主要應用於開發Java應用。對象

 2. ApplicationContext:位於org.springframework.context包中。繼承於BeanFactory,增長了IoC集成、處理消息資源、事件等功能。主要用於開發J2EE應用,是Spring推薦使用的接口。繼承

 

oop是靜態的抽象,aop是動態的抽象, 接口

 

aop框架具備的兩個特徵: 1.各個步驟之間的良好隔離性 2.源代碼無關性事件

 

切入點(pointcut): 切入點是鏈接點的集合,它一般和裝備聯繫在一塊兒,是切面和程序流程的交叉點。好比說,定義了一個pointcut,它將拋出異常ClassNotFoundException和某個裝備聯繫起來,那麼在程序執行過程當中,若是拋出了該異常,那麼相應的裝備就會被觸發執行。

裝備(advice): 也能夠叫作「通知」,指切面在程序運行到某個鏈接點所觸發的動做。在這個動做種咱們能夠定義本身的處理邏輯。裝備須要利用切入點和鏈接點聯繫起來纔會被觸發。

目前AOP定義了五種裝備:前置裝備(Before advice)、後置裝備(After advice)、環繞裝備(Around Advice)、異常裝備(After throwing advice)、返回後裝備(After returning advice)。

目標對象(target object): 被一個或者多個切面裝備的對象。因此它有時候也被稱爲Advised Object。

引入(introduction): 聲明額外的成員字段或者成員方法。它能夠給一個肯定的對象新增某些字段或者方法。

織入(weaving): 將切面和目標對象聯繫在一塊兒的過程。這個過程能夠在編譯期完成,也能夠在類加載時和運行時完成。Spring AOP是在運行期完成織入的。

切面(aspect): 一個關注點的模塊化。它其實是一段將被織入到程序流程中的一段代碼。

相關文章
相關標籤/搜索