spring AOP 原理和動態代理原理

https://blog.csdn.net/weixin_40160543/article/details/92010760

 

什麼是代理模式

通過代理控制對象的訪問,可以詳細訪問某個對象的方法,在這個方法調用處理,或調用後處理。既(AOP微實現) ,AOP核心技術面向切面編程。

 

代理模式應用場景

SpringAOP、事物原理、日誌打印、權限控制、遠程調用、安全代理 可以隱蔽真實角色

 

AOP是OOP的延續,是(Aspect Oriented Programming)的縮寫,意思是面向切面(方面)編程。   主要的功能是:日誌記錄,性能統計,安全控制,事務處理,異常處理等等

 

什麼是靜態代理

由程序員創建或工具生成代理類的源碼,再編譯代理類。所謂靜態也就是在程序運行前就已經存在代理類的字節碼文件,代理類和委託類的關係在運行前就確定了。

 

 

1.代理對象,不需要實現接口

2.代理對象的生成,是利用JDK的API,動態的在內存中構建代理對象

 

缺點:jdk動態代理,必須是面向接口,目標業務類必須實現接口

 

Spring中。

1、如果目標對象實現了接口,默認情況下會採用JDK的動態代理實現AOP

2、如果目標對象實現了接口,可以強制使用CGLIB實現AOP

3、如果目標對象沒有實現了接口,必須採用CGLIB庫,spring會自動在JDK動態代理和CGLIB之間轉換

 

CGLIB動態代理與JDK動態區別

java動態代理是利用反射機制生成一個實現代理接口的匿名類,在調用具體方法前調用InvokeHandler來處理。

而cglib動態代理是利用asm開源包,對代理對象類的class文件加載進來,通過修改其字節碼生成子類來處理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章