动态代理的两种方式:JDK和cglib

一、动态代理
特点: 字节码随用随取,随用随加载
作用: 在不修改源码的基础上对方法增强

二、两种代理比较

特点 涉及的类 提供者 如何创建代理对象 创建代理对象的要求
JDK 基于接口 Prox JDK官方 Proxy.newProxyInstance() 被代理类中至少实现一个接口
cglib 基于子类 Enhancer 第三方cglib包 Enhancer.create() 被代理类不能是最终类

三、JDK代理的实现
动态代理的两种方式:JDK和cglib
Proxy.newProxyInstance参数详解

  1. ClassLoad: 类加载器,加载代理对象的字节码。这样就和被代理对象使用相同的类加载器。固定写法
  2. interface: 让代理对象和被代理对象有相同的方法。固定写法
  3. InvocationHandler:用于提供增强的代码
    动态代理的两种方式:JDK和cglib
    动态代理的两种方式:JDK和cglib注意:被代理对象需要是final的

四、cglib代理的实现