動態代理兩種實現方式及優缺點


動態代理就是利用反射和字節碼的技術,在運行期創建指定接口或類的子類(動態代理)以及其實例對象的技術,以達到無侵入性增強代碼的效果。

簡要描述下動態代理主要的兩種實現方式:

  一、JDK原生動態代理

    其中關鍵的兩個要素為:

      Proxy:newProxyInstance()生成代理對象

      InvocationHandler:invoke()增強方法

  二、CGLIB(code generation library)動態代理

    其中關鍵的兩個要素為:

      Enhance:create()生成代理對象

      MethodInterceptor:intercept()增強方法

  兩者優缺點:

    JDK原生動態代理:

      java原生支持,不需要任何外部依賴,但只能基於接口進行代理。

    CGLIB動態代理:

      通過繼承的方式進行代理,無論目標對象是否實現接口都可以代理,但無法處理final的情況。


免責聲明!

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



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