最近有用到Springboot+dubbo,但是去网上搜了好多帖子,发现都不能用,于是打算自己出一个。

首先安装zookeeper,因为是开发环境,所以直接在Windows上安的,修改一下配置文件,点击zkServer.cmd启动,不要关闭窗口,关闭的话服务就会关闭。

接下来就是正式搭框架了。

首先,创建一个父项目,暂不讨论命名问题,然后右键你创建的项目,就像下边这样,



文字叙述就是右键springboot这个项目名,然后鼠标移动到new 上,选择module,创建子项目

创建3个springboot子项目,创建的时候勾选一下web,有时候不勾选好像不可以。

创建完成就像这样

其中api是暴露接口服务的api层,provider是服务提供者,customer是服务消费者。因为本教程是基本教程,太社会的话就不说了。


这是api层暴露的接口,不需要写任何注解加任何配置。写个接口就可以了。

接下来是服务提供者,我们要导入依赖,这里我们用一个依赖就可以了


<dependency>
   <groupId>com.gitee.reger</groupId>
   <artifactId>spring-boot-starter-dubbo</artifactId>
   <version>1.1.1</version>
</dependency>
没错就是它,我记得还有一个io.啥的那个也可以用的。


这个依赖不要加到provide里,这样显得你很弟弟,我们打开父项目的pom,我这里也就是springboot的pom,因为这个项目pom比较多,千万别搞错,把依赖加入进去,然后在把api的依赖加进去。这个很简单的打开api的pom文件,


复制上边的groupId 这些,不要复制打包哪一行,然后在父Pom里加进去。


然后就成了这样。接下来把服务提供者和服务消费者的pom里

<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>2.0.1.RELEASE</version>
   <relativePath/> <!-- lookup parent from repository -->

</parent>

这个改成依赖父pom的groupid等。这样你就可以在子项目用父项目的配置依赖了。

这样依赖就算完成了。

终于可以愉快的敲代码了

然后在服务提供者里(provider) 新建一个实现类,因为父pom里都有api的依赖,所以不会报错。实现接口,使用@Service注解一下

注意是alibaba的包下的,不是springboot的。切记

然后写配置文件,

## Dubbo 服务提供者配置
server.port=6783
#应用名称
spring.dubbo.application.name=provider
#注册中心地址
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
#协议名称
spring.dubbo.protocol.name=dubbo
#协议端口
spring.dubbo.protocol.port=20880
#服务类包目录
spring.dubbo.base-package=impl

考虑到cv党的幸福,我选择直接贴代码,免得复制不到

启动成功就是这个样子

如果你的注解没有加对或者扫描路径不对就会报错,或者启动不起来,不显示dubbo和zookeeper这些信息。


接下来是服务消费者的代码


这里需要注意的也就是@Reference注解,

server.port=8081
spring.dubbo.application.name=consumer
#注册中心地址
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
#rpc调用的包
spring.dubbo.base-package=controller
这个是他的配置文件。这里要注意端口不要重复,扫描的包要是@Reference注解出现的包,也就是你调用的包。

然后启动消费者。和消费者启动console 信息差不多。

然后访问    http://localhost:8081/main?name=jack



成功!

刚开始按照其他教程做好长时间没出来,各种错误,这里 要注意父pom与子pom之间的依赖,别写错了,还有服务提供者消费者的扫描路径,注册地址等。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐