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的动态代理.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值