1.静态代理:代理类和目标类实现相同的接口,在代理中去调用目标类的方法,去实现静态代理。程序运行前生成。
2.jdk动态代理
- 代理处理器,实现invocationHandler接口,重写Invoke方法。方法参数包括代理目标类的真实代理对象,方法名称,方法参数个数。
- 创建jdk动态代理,通过proxy代理类去调用newProxyInstance方法,方法参数是目标类的加载器,代理类的接口,代理类处理器。实现动态代理类,去调用方法。
3.CGLB动态代理
- 创建方法拦截器,实现methodIntercepter的接口,重写Intercept方法,方法参数名称为代理类对象,被代理拦截的方法,拦截的参数,代理类对应的目标类的代理。
- 创建CGLB动态代理,使用Enhancer调用getProxy方法,设置被代理类,被代理的类加载器,设置方法拦截器,创建代理。
4.总结
jdk动态代理是通过实现和目标类的接口,通过构造器参数实现动态代理的调用。而CGLB动态代理是生成目标类的子类,通过拦截方法去实现。
- 我的微信
- 微信扫一扫
-
- 我的微信公众号
- 微信扫一扫
-
评论