Spring的jdk動態代理與cglib動態代理的區別?


優先是jdk動態代理,其次是cglib動態代理,網上搜一下兩種動態代理的代碼示例。

 

其實就是動態的創建一個代理類出來,創建這個代理類的實例對象,在這個里面引用你真正自己寫的類,所有的方法的調用,都是先走代理類的對象,他負責做一些代碼上的增強,再去調用你寫的那個類。

 

spring里使用aop,比如說你對一批類和他們的方法做了一個切面,定義好了要在這些類的方法里增強的代碼,spring必然要對那些類生成動態代理,在動態代理中去執行你定義的一些增強代碼。

 

如果你的類是實現了某個接口的,spring aop會使用jdk動態代理,生成一個跟你實現同樣接口的一個代理類,構造一個實例對象出來,jdk動態代理,他其實是在你的類有接口的時候,就會來使用。

 

很多時候我們可能某個類是沒有實現接口的,spring aop會改用cglib來生成動態代理,他是生成你的類的一個子類,他可以動態生成字節碼,覆蓋你的一些方法,在方法里加入增強的代碼。


免責聲明!

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



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