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); 前后增加处理代码

 

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

 

posted @ 2018-02-25 17:07  梦の华丽  阅读(107)  评论(0编辑  收藏  举报