手动模拟JDK动态代理的方法

qqstrategy55120 17 0 pdf 2022-04-25 00:04:30

实现自己动态代理,首先需要关注的点就是,代理对象需要为哪些方法代理?原生JDK的动态代理的实现是往上抽象出一层接口,让目标对象和代理对象都实现这个接口,怎么把接口的信息告诉jdk原生的动态代理呢?通过newInstance()用户获取到的代理对象就像上面的代理一样,这个过程是在java代码运行时生成的,但是直接看他的结果和静态代理差不错,这时用户再去调用代理对象的say(), 实际上就是在执行用户传递进去的InvocationHandeler里面的invoke方法, 但是亮点是我们把目标方法的描述对象Method同时给他传递进去了,让用户可以执行目标方法+增强的逻辑当通过反射区执行Method对象的invoke()方法时,指定的哪个对象的当前方法呢?这个参数其实是我们手动传递进去的代理对象代码如下

手动模拟JDK动态代理的方法

手动模拟JDK动态代理的方法

手动模拟JDK动态代理的方法

手动模拟JDK动态代理的方法

手动模拟JDK动态代理的方法

手动模拟JDK动态代理的方法

用户评论
请输入评论内容
评分:
暂无评论