欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JDK的动态代理-----为接口进行代理

程序员文章站 2022-03-28 18:20:15
JDK的动态代理是必须掌握的,动态代理的好处就不用我多说了吧 :) 小弟最近在研究mybatis的源码实现,就开始了解mybatis的Mapper代理机制,为什么接口不用实现类也能代理? 好了,废话不多说!!! 上代码 下面是测试结果: JDK的动态代理要有实现一个InvocationHandler ......

JDK的动态代理是必须掌握的,动态代理的好处就不用我多说了吧 :)

小弟最近在研究mybatis的源码实现,就开始了解mybatis的Mapper代理机制,为什么接口不用实现类也能代理?

好了,废话不多说!!! 上代码

JDK的动态代理-----为接口进行代理

下面是测试结果:

JDK的动态代理-----为接口进行代理

 

JDK的动态代理要有实现一个InvocationHandler的接口,要实现invoke的方法,invoke方法中就是代理对象具体的方法调用的逻辑,

在mybatis的Mapper代理中,有一个类 MapperProxy<T>实现了InvocationHandler的接口,并重写了invoke的方法

下面是MapperProxy中的invoke方法:

JDK的动态代理-----为接口进行代理

 

其实为接口进行代理,用的就是偷梁换柱,(小弟拙见)