字节码随用随创建,随用随加载。
不修改源码的情况下对源码增强。
分类:基于接口的,基于子类的
基于接口的动态代理
涉及的类:Proxy
提供者:JDK官方
如何创建代理对象:Proxy
类的newProxyInstance
方法
创建代理对象的要求:被代理类最少实现一个接口,如果没有则不能使用。
newProxyInstance
方法的参数
classLoader
:用于加载代理对象字节码,和被代理对象使用相同的类加载器。
class[]
:字节码数组,让代理对象和被代理对象有相同方法。
InvocationHandler
:提供增强的代码,写如何代理。
执行被代理对象的任何方法都会经过该方法。
基于子类的动态代理
涉及的类:Enhancer
提供者:第三方cglib库
如何创建代理对象:Enhancer
类的create
方法
创建代理对象的要求:被代理类不能是最终类
create
方法的参数
class
:字节码,用于指定被代理对象的字节码。
callback
:提供增强的代码,写的一般是该接口的实现类MethodInterceptor
应用场景
待补充
网友评论