🍁 作者:知识浅谈,CSDN签约讲师,CSDN博客专家,华为云云享专家,阿里云星级博主
📌 擅长领域:全栈工程师、爬虫、ACM算法
💒 公众号:知识浅谈
🔥 联系方式vx:zsqtcc
项目全部源码及其zookeeper安装包
公众号:知识浅谈 后台回复“springboot集成dubbo”获取下载连接。
- 第一步:获取完上边的项目之后,先安装zookeeper,
- 安装zookeeper,只需要在zookeeper的跟文件夹下创建一个data文件夹,然后在conf文件夹下复制zoo_sample.cfg,粘贴到和zoo_sample 相同目录下重命名为zoo.cfg
然后修改zoo.cfg中的dataDir后边的地址为你刚才创建的data文件夹的绝对路径
然后就可以在bin文件夹下的zkServer.cmd,启动注册中心了,当然,等你下边项目写完之后,先运行这个文件,再运行项目就ok了
- 第二步,项目部署
- 先给出我的文件夹结构,结合着创建项目
第一个项目:建立对应的用于接口的项目,因为接口在服务提供者和服务消费者都用的到(服务提供者用接口实现,服务消费者使用接口调用服务提供者实现的方法)
不选哪个create直接点击下一步创建即可,名字结合我项目中的或者上边文件结构中的。
该项目中就一个文件service的接口,而且pom.xml不用改变
packagecom.englishcode.springboot.service; /*** @author cyl* @version 1.0* @date 2020/10/27 11:26*/publicinterfaceStudentService { IntegerqueryAllStudentCount(); }
第二个项目21服务提供者:使用springboot创建
名字同样参考文件结构
对应的pom.xml文件:
<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.4.RELEASE</version><relativePath/><!-- lookup parent from repository --></parent><groupId>com.englishcode.springboot</groupId><artifactId>021-springboot-dubbo-provider</artifactId><version>1.0.0</version><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--dubbo集成springboot依赖--><dependency><groupId>com.alibaba.spring.boot</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.0.0</version></dependency><!--注册中心--><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><version>0.10</version></dependency><!--接口工程--><dependency><groupId>com.englishcode.springboot</groupId><artifactId>020-springboot-dubbo-interface</artifactId><version>1.0.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
对应的application.properties
#设置内嵌tomcat端口号 server.port=8081 #设置上下文 server.servlet.context-path=/ #设置dubbo的配置 spring.application.name=021-springboot-provider #设置当前工程是一个服务提供者 spring.dubbo.server=true #设置注册中心 spring.dubbo.registry=zookeeper://127.0.0.1:2181
对应的启动文件:
package com.englishcode.springboot; import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @EnableDubboConfiguration //开启dubbo配置 public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
对应的service实现文件
packagecom.englishcode.springboot.service.impl; importcom.alibaba.dubbo.config.annotation.Service; importcom.englishcode.springboot.service.StudentService; importorg.springframework.stereotype.Component; /*** @author cyl* @version 1.0* @date 2020/10/27 11:28*///加载到spring容器中interfaceClass=StudentService.class,version="1.0.0",timeout=15000) //这个即使最后要暴漏出去的类名 (publicclassStudentServiceImplimplementsStudentService { publicIntegerqueryAllStudentCount() { return12; } }
- 对于第三个项目22服务消费者:
- pom.xml和上边的差不多,以来都一样,把对应的名字什么改一下就行,源码如下
<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.4.RELEASE</version><relativePath/><!-- lookup parent from repository --></parent><groupId>com.englishcode.springboot</groupId><artifactId>022-springboot-dubbo-consumer</artifactId><version>1.0.0</version><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--dubbo集成springboot框架起步依赖--><dependency><groupId>com.alibaba.spring.boot</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.0.0</version></dependency><!--注册中心--><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><version>0.10</version></dependency><!--接口工程,只有有这个才能知道提供者要提供哪些工程,消费者需要哪些工程--><dependency><groupId>com.englishcode.springboot</groupId><artifactId>020-springboot-dubbo-interface</artifactId><version>1.0.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
对应的application.properties
#设置内嵌tomcat端口号 server.port=8082 server.servlet.context-path=/ #dubbo配置 spring.application.name=022-springboot-dubbo-consumer #指定注册中心,使用的是zookeeper spring.dubbo.registry=zookeeper://127.0.0.1:2181
对应的启动文件:
packagecom.englishcode.springboot; importcom.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration; importorg.springframework.boot.SpringApplication; importorg.springframework.boot.autoconfigure.SpringBootApplication; //开启dubo的配置publicclassApplication { publicstaticvoidmain(String[] args) { SpringApplication.run(Application.class, args); } }
对应的controller
packagecom.englishcode.springboot.service; importcom.alibaba.dubbo.config.annotation.Reference; importorg.springframework.stereotype.Controller; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.ResponseBody; /*** @author cyl* @version 1.0* @date 2020/10/27 11:21*/publicclassStudentController { interfaceClass=StudentService.class,version="1.0.0",check=false) //相当于从注册中心要引用哪个方法 (privateStudentServicestudentService; "") (publicObjectstudentCount(){ Integerall=studentService.queryAllStudentCount(); return"学生总人数:"+all; } }
注意:在配置文件中设置的那个server.port不能相同会冲突,代码中已经设置为不相同了。
开始运行:
运行步骤:注册中心(zookeeper)运行,然后运行服务提供者,最后运行服务消费者,然后通过网页访问查看是否成功。
第一步,zookeeper运行起来如下:
这就代表运行成功了
第二步:运行服务提供者:
第三步:运行服务消费者
最后一步:访问网页
完美结束,你,学会了吗