在程序運行前就已經存在代理類的字節碼文件,代理類和委託類的關係在運行前就肯定了
代理類的源碼是在程序運行期間由 JVM 根據反射等機制動態的生成,因此不存在代理類的字節碼文件
1.目標方法實現了接口 (經過 JDK
的代理生成 AOP
代理對象)
spa
2.目標方法沒有實現接口 (使用 cglib
來實現生成 AOP
代理對象)
代理
總結:JDK代理
能夠生成與原類實現相同接口的一個類,可是若是原來的類沒有實現接口的話可能就不太適用。cglib代理
會使用一個字解碼的編譯器(ASM編譯器),能夠生成一個目標類的子類去實現相似的一個代理功能,cglib建立對象的過程可能會慢一點,可是在運行的時候可能效率會更高一些。code