JDK動態代理實現
? 動態代理利用了JDK API,動態地在內存中構建代理對象,從而實現對目標對象的代理功能.動態代理又被稱為JDK代理或接口代理.
靜態代理與動態代理的區別:
-
靜態代理在編譯時就已經實現了,編譯完成后代理類是一個實際的class文
-
動態代理是在運行時動態生成的,即編譯完成后沒有實際的class文件,而是在運行時動態生成類字節碼,并加載到JVM中.
cglib動態代理
? cglib (Code Generation Library ) 是一個第三方代碼生成類庫,運行時在內存中動態生成一個子類對象從而實現對目標對象功能的擴展。cglib 為沒有實現接口的類提供代理,為JDK的動態代理提供了很好的補充。
-
最底層是字節碼
-
ASM是操作字節碼的工具
-
cglib基于ASM字節碼工具操作字節碼(即動態生成代理,對方法進行增強)
-
SpringAOP基于cglib進行封裝,實現cglib方式的動態代理
cglib代理流程
推薦閱讀
技術總體方案設計思路-CSDN博客