java动态代理的实现原理
一.JDK动态代理过程
我们来看一下使用JDK得动态代理,静态代理就不写了
因为JDK是基于接口实现得
1.这个时候把找对象这件事交给媒婆去处理(也就是找代理对象去做),这里媒婆就是代理对象,chengxuyuan是被代理对象
媒婆在帮忙找对象前后做了两件事.看代码:
使用测试类并将生成得代理类$Proxy0输出到磁盘中.
这里就是jvm在运行期间动态生成得代理类
看了这么多,那么动态代理的整个实现过程是什么样子的呢?
Proxy.newInstanceProxy(ClassLOader,target.getclass.getInterfaces,InvocationHandler) ;这里做了什么
在JVM中进行了字节码重组.
/** * 动态代理实现原理 * 1.获得被代理类的引用,并且获取到它的所有接口,反射获取 * 2.JDK Proxy重新生成一个新的类,同时新的类要实现被代理类的所有实现的接口 * 3.动态生成java代码,把新加的业务逻辑方法由一定的逻辑代码去调用(再代码中体现) * 4.编译新生成java代码为class * 5.再重新加载到JVM中运行 * 以上过程就被称为字节码重组 */
后续会补上纯手撸实现JDK的动态代理.