jdk、cglib,动态代理

先看下结果再来分析

jdk一次增强,cglib两次增强

基础类

JDK动态代理

输出:

 

cglib代理

输出:

分析:

1、jdk动态代理,一次增强

jdkClient中生成的dao代理类如下,实现了IDAO,调用select方法,其实是代理类中的select方法,super.h.invoke(this, m4, (Object[])null);此处调用的是DaoJdkProxy.invoke,实际调用 对象是Dao的select方法,顺序调用insert方法,只会在调用select方法前增强一次

 

 2、cglib代理,2次增强

根据dao生成了多个cglib.class,代理类select方法调用,90行为增强方法调用,此处的MethodInterceptor为daoProxy,select方法默认调用父类方法,即dao类中的select,父类Dao中的select方法,会调用insert,此时会调用子类insert方法,又是一次增强,再调用父类insert。

代理类中的select方法

 client中加入以下行,指定代理类文件位置

System.setProperty(DebuggingClassWriter.DEBUG_LOCATION_PROPERTY, "./");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值