# 《RPC手撸专栏》第38章:基于SPI扩展CGLib反射机制调用真实方法
作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
沉淀,成长,突破,帮助他人,成就自我。
大家好,我是冰河~~
在前面的章节中,我们在服务消费者端基于SPI扩展了JDK、CGLib、Javassist、ByteBuddy和ASM动态代理机制。在服务提供者端,基于SPI扩展了JDK反射机制调用真实方法的功能。
# 一、前言
之前基于SPI扩展了JDK反射机制调用真实方法,还能扩展其他的方式调用真实方法吗?
在前面的文章中,我们基于SPI扩展了JDK反射机制调用真实方法的功能,并且已经完美经过了测试的验证。其实,小伙伴们都知道,之前我们实现了基于JDK和CGLib两种方式调用真实方法。所以,接下来,我们就要实现基于SPI扩展CGLib反射机制调用真实方法。
# 二、目标
目标很明确:基于SPI扩展CGLib反射机制调用真实方法!
在上一章中,在服务提供者端基于SPI扩展了JDK反射机制调用真实方法的功能。在服务提供者端实现了调用真实方法高度的扩展性,今天,我们就再次基于SPI扩展CGLib反射机制调用真实方法。
好了,目标明确了,接下来就是撸起袖子加油干了!
# 三、设计
如果让你设计基于SPI扩展CGLib反射机制调用真实方法,你会怎么设计呢?
基于SPI扩展CGLib反射机制调用真实方法的流程图如图38-1所示。
由图38-1可以看到,服务提供者会以SPI的形式引用调用真实方法的SPI接口,基于JDK和CGLib的反射机制调用真实方法的类是SPI接口的实现类,服务提供者会通过SPI加载JDK和CGLib反射机制调用真实方法的实现类。而JDK和CGLib反射机制调用真实方法的实现类会实现SPI接口,最终调用真实方法。
# 四、实现
说了这么多,具体要怎么实现呢?
# 核心类实现关系
基于SPI扩展CGLib反射机制调用真实方法的核心类关系如图38-2所示。
# 查看完整文章
加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码