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

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

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

  一、JDK原生动态代理

    其中关键的两个要素为:

      Proxy:newProxyInstance()生成代理对象

      InvocationHandler:invoke()增强方法

  二、CGLIB(code generation library)动态代理

    其中关键的两个要素为:

      Enhance:create()生成代理对象

      MethodInterceptor:intercept()增强方法

  两者优缺点:

    JDK原生动态代理:

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

    CGLIB动态代理:

      通过继承的方式进行代理,无论目标对象是否实现接口都可以代理,但无法处理final的情况。

posted on 2020-08-01 00:23  24ming  阅读(1005)  评论(0编辑  收藏  举报