Dubbo源码学习(一):dubbo如何检查重复的jar包和获取当前dubbo版本号

本文从Dubbo如何检查重复jar包和获取当前版本号入手,介绍了DubboNamespaceHandler类及其在静态代码块中的作用。讲解了Version类中的getVersion()和checkDuplicate()方法实现,通过MANIFEST.MF和jar包路径获取版本信息,并展示了检查重复jar包的原理。下篇将继续探讨Dubbo XML配置文件解析和功能入口。
摘要由CSDN通过智能技术生成

hi,乡亲们好:

 菜鸟最近打算学习一下dubbo背后的实现,但又不知道从哪里看起。幸好有位大牛提供了思路。于是就有了第一篇文章,后续还会更新哒!

一、提出疑问:

(1).Dubbo是利用什么来检查项目中是否出现重复的jar包?

(2).Dubbo又是如何来获取项目中的dubbo版本号呢?

  •  带着这两个疑问首先找到代码的入口:在dubbo-config子工程中的org.apache.dubbo.config.spring.schema包中的DubboNamespaceHandler类中的静态代码块中,而该类又继承了spring-bean的NamespaceHandlerSupport,至于为什么要集成它,下一篇文章再陈述。
 //防痴设计来检查是否有重复的jar包 @link:https://blog.csdn.net/youling_lh/article/details/11829779
    static {
        Version.checkDuplicate(DubboNamespaceHandler.class);
    }
  • 在Version类中,主要的两个方法分别是:getVersion(Class<?> cls, String defaultVersion)和checkDuplicate(String path, boolean failOnError)
getVersion(Class<?> cls, String defaultVersion)
checkDuplicate(String path, boolean failOnError)

(3).先说一下checkDuplicate(String path, boolean failOnError)这个方法实现,该方法就是检查是否存在重复的jar包:

  • 首先将Version这个类作为唯一的标识,获取项目中的Version这个类的文件路径,然后再新建一个SET集合,将获取到的路径放判断是否还有更多的节点,如果有则获取下一个节点,当节点不为空时;再将url对象放入set集合中;为什么要这么做,因为项目中如果出现了重复的jar包,那么就会出现两个Version类,而实际正确情况只能有一个jar包。当两个jar包在不同的路径时,放入不可重复,不能为空的set集合中,如果set的size大于1则说明有重复的jar包。以下是实现的代码&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值