最近面试被问到有没有用过Dubbo或者SpringCloud很遗憾只知道皮毛,没有实际动手弄过,因为这几年都是搞的小项目,说来惭愧,好了,不废话了,进入正题。
从昨天早上开始整合SpringBoot 和Dubbo 到今天早上算是花了整整一天终于整个成功了,首先来张图庆祝下:
我使用的版本 jdk8 ,Dubbo 后台管理网上下载的2.6.0的war,zookeeper3.4.13 ,SpringBoot 2.1.4.RELEASE
首先要注意的就是SpringBoot的starter的选择,目前来说根据dubbo的版本不同有三种
2.7.x 用GroupId 为com.alibaba.spring.boot 的2.x版本的
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
<exclusions>
<exclusion>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
</exclusion>
</exclusions>
</dependency>
也就是说小于2.7版本的dubbo,的启动类和SpringBoot的版本也相关,下面的是官方文档截图(https://github.com/apache/incubator-dubbo-spring-boot-project)
第二个就是:包扫描的问题,在启动类上添加注解
@EnableDubbo
@DubboComponentScan("com.rain.study.service.impl") 注解中的报名一定要指定,当时配置的时候没有起作用,不知道是不是因为我application.properties文件中的key写错的了原因(这是我的配置 spring.dubbo.scan=com.rain.study.service.impl),这样写就好了@DubboComponentScan("com.rain.study.service.impl")服务也就添加进去了
第三个application.properties 中的配置文件到底应该是 带不带spring.的问题,由于我当时按照网上有的帖子配置的是spring.dubbo.registry.address=zookeeper://127.0.0.1:2181 报错是说registry不存在我就删了spring. 就好了,根据官方的说发应该是不带的,但是下面这个必须得添加,不然直接会报错
spring.application.name=dubboprovider
在整合Consumer的时候搞了半天,启动之后链接访问不了,直到我看见别的博客中说是添加
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
试了一下果然就好了
好了这个就是我这一天遇到的问题,值得分享出来的吧,这只是provider端,consumer还没弄出来,一会弄好了整理好之后再发出来,昨天的纠结终于可以一扫而光了