java代理模式
代理分为两个步骤
代理对象和真实对象建立代理方法
实现代理对象的代理逻辑方法
常见的java动态代理技术很多种
比如 JDK CGLIB Javassist ASM,最常用的JDK和CGLIB
JDK java的jdk自身提供的
CGLIB 第三方提供的技术
目前 Spring JDK和CGLIB,Mybatis还使用Javassist.
它们的理念相似
JDK实现动态代理
必须要有接口
newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h)
参数1: 类加载器
参数2: 把生成的动态代理对象挂在哪些接口下
参数3: 定义实现方法逻辑的代理类,this表示当前对象,它必须实现InvocationHandler接口的invoke方法,即代理逻辑的实现方法
CGLIB 不需要接口 所以实现起来简单
Enhancer cglib的加强者
通过设置超类的方法setSuperclass
然后通过setCallback方法设置哪个类为它的代理类