动态代理是反射的的一个运用

1、代理中的对象关系

动态代理 - 图1
image.png

2、动态代理基础类

Proxy :专门完成代理的操作类,是所有动态代理类的父类。通过此类为一
个或多个接口动态地生成实现类。

1)getProxyClass()方法

创建一个动态代理类所对应的Class对象
image.png
image.png
image.png

2)newProxyInstance 方法

直接创建一个动态代理对象
image.png
image.png

参数 第一参数,类加载器
第二参数,增强方法所在的类,代理类要实现的接口列表,支持多个接口
第三参数,指派方法调用的调用处理程序(实现这个接口 InvocationHandler,创建代理对象,写增强的部分)
返回 一个带有代理类的指定调用处理程序的代理实例,它由指定的类加载器定义,并实现指定的接口
抛出 IllegalArgumentException - 如果违反传递到 getProxyClass 的参数上的任何限制
NullPointerException - 如果 interfaces 数组参数或其任何元素为 null,或如果调用处理程序 h 为 null

3、动态代理步骤

image.png
image.png
image.png
image.png