Spring AOP IOC

weixin_33912445發表於2018-04-03

IOC

反射
在例項化一個類時,它通過反射呼叫類中set方法將事先儲存在HashMap中的類屬性注入到類中。 總而言之,在傳統的物件建立方式中,通常由呼叫者來建立被呼叫者的例項,而在Spring中建立被呼叫者的工作由Spring來完成,然後注入呼叫者,即所謂的依賴注入or控制反轉。 注入方式有兩種:依賴注入和設定注入; IoC的優點:降低了元件之間的耦合,降低了業務物件之間替換的複雜性,使之能夠靈活的管理物件。

AOP

動態代理,靜態織入
一是採用動態代理技術,利用擷取訊息的方式,對該訊息進行裝飾,以取代原有物件行為的執行;二是採用靜態織入的方式,引入特定的語法建立“方面”,從而使得編譯器可以在編譯期間織入有關“方面”的程式碼,屬於靜態代理
JDK動態代理和CGLIB代理 JDK動態代理:其代理物件必須是某個介面的實現,它是通過在執行期間建立一個介面的實現類來完成對目標物件的代理;其核心的兩個類是InvocationHandler和Proxy。 CGLIB代理:實現原理類似於JDK動態代理,只是它在執行期間生成的代理物件是針對目標類擴充套件的子類。CGLIB是高效的程式碼生成包,底層是依靠ASM(開源的java位元組碼編輯類庫)操作位元組碼實現的,效能比JDK強;需要引入包asm.jar和cglib.jar。 使用AspectJ注入式切面和@AspectJ註解驅動的切面實際上底層也是通過動態代理實現的。

相關文章