java中关于动态代理的方法和概念
前言
Java动态代理的优势可以方便的代码扩展,也就是方法的增强;让你可以在不用修改源码的情况下,增强一些方法;
动态代理
* 特点:字节码随用随创建,随用随加载
* 作用:不用修改源码的基础上,对方法增强
* 类型:
* 基于接口的动态代理
* 基于子类的动态代理
* 基于接口的动态代理:
* 涉及的类:Proxy
* 提供者:jdk官方
* 如何创建代理对象:
* 使用Proxy类中的newProxyInstance方法
* 创建代理对象的要求:被代理类最少实现一个接口,如果没有则不能使用
newProxyInstance方法的参数:
* classLoader:类加载器
* 他是用于加载代理对象字节码的,和被代理对象的使用相同的类加载器
* class[]:字节码数组
* 他是用于让代理对象和被代理对象有相同的方法
* InvocationHandler:用于提供增强的代码
* 他是让我们写如何代理,我们一般都是写一个该接口的实现类,通常情况下都是匿名内部类,但不是必须的
* 此接口的实现类都是谁用谁写
作用执行被代理对象的任何接口方法都会经过该方法
*
* InvocationHandler:方法参数的含义
* proxy:代理对象的引用
* method:当前执行的方法
* args:当前执行方法所需的参数数组
* 返回值:和被代理对象方法有相同的返回值