整体架构说明:
1.一个父项目 package类型为 pom,依赖的jar:spring-boot-starter-parent/spring-boot-starter-web/spring-boot-starter-dubbo
2.三个子项目,包括:api(接口项目,项目中提供抽象接口) 、
provider(服务提供项目,基于springboot的)、
consumer(服务消费项目,基于springboot的,供最上层调用)
3.需要启动本地的zookeeper环境、端口为2181
4.整个项目是在eclipse上面搭建,需要maven插件的支持,需要jdk1.7及其以上的版本
架构图(取的名字有些挫,但就只是为了搭建环境使用的,就随便取个名字吧):
1.先创建父级依赖工程:sdz-parent,packaging类型为pom,依赖的jar包pom文件如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.7</java.version>
<dubbo-spring-boot>1.0.0</dubbo-spring-boot>
</properties>
<dependencies>
<!-- springbootweb启动需要的jar依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--springboottest需要的jar依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!-- Spring Boot Dubbo 依赖 -->
<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>${dubbo-spring-boot}</version>
</dependency>
<!-- Junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
2.再创建sdz-api项目,选择父项目为sdz-parent,api项目中主要存放公共接口以及相关实体(其实可以再构建一个模块,用来存放entity),如下图:
3.随后创建sdz-provider项目,也选择父项目为sdz-parent,依赖于sdz-api项目,需要在pom.xml中添加如下代码:
<dependencies>
<dependency>
<groupId>com.sushi</groupId>
<artifactId>sdz-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
provider项目中主要做的事情就是提供接口的具体实现,如下图:
其中@Service是com.alibaba.dubbo.config.annotation.Service包下面的,标识该类为服务提供类。其中该项目的application.properties内容如下:
#应用端口
server.port=7001
#dubbo应用名称
spring.dubbo.application.name=dubbo-provider
#注册中心地址
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
#暴露服务方式
spring.dubbo.protocol.name=dubbo
#暴露服务端口
spring.dubbo.protocol.port=20880
#暴露服务包
spring.dubbo.scan=com.sushi.api.impl
4.最后建立sdz-consumer项目,也选择父项目为sdz-parent,该项目为服务消费方。
该项目依赖于sdz-api项目,需要在pom.xml中添加如下代码:
<dependencies>
<dependency>
<groupId>com.sushi</groupId>
<artifactId>sdz-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
消费代码如下图:
其中@Reference是com.alibaba.dubbo.config.annotation.Reference包下面的,表示依赖的服务。该项目的application.properties内容如下:
server.port=7002
#应用名称
spring.dubbo.application.name=dubbo-consumer
#注册中心地址
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
#dubbo注解扫描路径
spring.dubbo.scan=com.sushi.controller
测试步骤:
1.先启动本地的zookeeper服务,D:\java\zookeeper-3.3.6\bin\zkServer.cmd,保证能够正常运行,如下:
2.再启动sdz-provider项目,最后启动sdz-consumer项目
3.访问http://192.168.3.195:7002/user/findUsersByCount?count=10,得到下面结果:
至此springboot集成dubbo+zookeeper完毕,完整项目下载:
https://download.csdn.net/download/u013315062/10808053
如有任何疑问:请加qq:2281558656,欢迎探讨技术。