java动态代理的实现原理

一.JDK动态代理过程

我们来看一下使用JDK得动态代理,静态代理就不写了

因为JDK是基于接口实现得

java动态代理的实现原理_第1张图片

java动态代理的实现原理_第2张图片

1.这个时候把找对象这件事交给媒婆去处理(也就是找代理对象去做),这里媒婆就是代理对象,chengxuyuan是被代理对象

媒婆在帮忙找对象前后做了两件事.看代码:

java动态代理的实现原理_第3张图片

使用测试类并将生成得代理类$Proxy0输出到磁盘中. 

java动态代理的实现原理_第4张图片

这里就是jvm在运行期间动态生成得代理类 

java动态代理的实现原理_第5张图片 

看了这么多,那么动态代理的整个实现过程是什么样子的呢?

Proxy.newInstanceProxy(ClassLOader,target.getclass.getInterfaces,InvocationHandler) ;这里做了什么

在JVM中进行了字节码重组.

/**
 * 动态代理实现原理
 * 1.获得被代理类的引用,并且获取到它的所有接口,反射获取
 * 2.JDK Proxy重新生成一个新的类,同时新的类要实现被代理类的所有实现的接口
 * 3.动态生成java代码,把新加的业务逻辑方法由一定的逻辑代码去调用(再代码中体现)
 * 4.编译新生成java代码为class
 * 5.再重新加载到JVM中运行
 * 以上过程就被称为字节码重组
 */

后续会补上纯手撸实现JDK的动态代理.

你可能感兴趣的:(设计模式)