动态代理两种实现方式及优缺点


动态代理就是利用反射和字节码的技术,在运行期创建指定接口或类的子类(动态代理)以及其实例对象的技术,以达到无侵入性增强代码的效果。

简要描述下动态代理主要的两种实现方式:

  一、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