由于dubbo2.7.8之前的版本有漏洞,项目需要升级至2.7.8,之前用的是阿里的dubbo,在版本切换上遇到过一些问题,特记录一下心得。
首先讲下dubbo的版本
dubbo在2.6版本是阿里在管理和维护,后面交给了apache管理,2.7.*都是apache的 maven依赖引入的方式也不同,具体引入方式可去maven仓库查询即可。
之前项目用到的是阿里的dubbo,考虑到后面可能又会发现其他漏洞而进行升级,为了减少兼容性问题,现在计划直接升级到最新版,如果后面再升级就方便很多。
现使用spring boot +dubbo2.7.8做一个小的测试案例检验效果。
注意事项一:阿里的apache的关于dubbo的配置是以spring开头的,如下图
而dubbo2.7以上的均以dubbo开头,如下图,基本配置下面这几个就ok了,因为我用的是zk作为注册中心,所以注册中心地址是zk的地址。
注意事项二:再来说pom文件的问题,用最新的dubbo需要配置的依赖如下:
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.8</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.8</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.8.0</version>
</dependency>
仅仅把dubbo升级成2.7.8是不行的,必须要把curator-framework和curator-recipes也要升级才能匹配上,具体升级成哪个版本需要去看下兼容性匹配,maven里也可以查看匹配的依赖版本,之前查过一次,如果不知道就和我用相同的版本吧,亲测有效。
注意事项三:dubbo2.7.8兼容之前的注解@service和@reference ,但在2.7.7版本,有人提议改为@dubboservice和@dubboreference,其目的是区分spring的@service,收到广大开发者的赞同,于是便改了这一注解。具体可看下图,同时贴出此issues的地址
https://github.com/apache/dubbo-spring-boot-project/issues/447