码迷,mamicode.com
首页 > 编程语言 > 详细

java动态代理

时间:2018-02-25 19:19:12      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:tar   处理   lib   div   oca   类方法   java   默认   直接   

Jdk动态代理

通过获取委托类实现的所有接口,为每个接口方法创建一个代理方法,通过ProxyGenerator.generateProxyClass动态生成代理类字节码文件并加载,反射生成代理对象,调用的时候通过InvocationHandler调用invoke方法,在回调方法invoke中,使用反射调用原对象的方法method.invoke(target, args);

技术分享图片

动态生成的代理类关键代码

技术分享图片

 

Cglib动态代理

通过继承一个委托类,通过ASM框架strategy.generate(this)动态生成代理子类字节码文件并加载,反射生成对象,调用的时候可以通过intercept拦截方法,如果不拦截,则默认直接调用父类方法,intercept方法中proxy.invokeSuper(obj, args); 最终调用父类方法,可以在intercept方法中在调用proxy.invokeSuper(obj, args); 前后增加处理代码

 技术分享图片

动态生成的代理类关键代码

技术分享图片

 

java动态代理

标签:tar   处理   lib   div   oca   类方法   java   默认   直接   

原文地址:https://www.cnblogs.com/huali/p/8469830.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!