项目全部源码及其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不用改变
代码语言:javascript复制package com.englishcode.springboot.service;
/**
* @author cyl
* @version 1.0
* @date 2020/10/27 11:26
*/
public interface StudentService {
Integer queryAllStudentCount();
}
第二个项目21服务提供者:使用springboot创建
名字同样参考文件结构 对应的pom.xml文件:
代码语言:javascript复制<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="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
代码语言:javascript复制#设置内嵌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
对应的启动文件:
代码语言:javascript复制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实现文件
代码语言:javascript复制package com.englishcode.springboot.service.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.englishcode.springboot.service.StudentService;
import org.springframework.stereotype.Component;
/**
* @author cyl
* @version 1.0
* @date 2020/10/27 11:28
*/
@Component //加载到spring容器中
@Service(interfaceClass = StudentService.class,version = "1.0.0",timeout = 15000) //这个即使最后要暴漏出去的类名
public class StudentServiceImpl implements StudentService {
@Override
public Integer queryAllStudentCount() {
return 12;
}
}
- 对于第三个项目22服务消费者:
- pom.xml和上边的差不多,以来都一样,把对应的名字什么改一下就行,源码如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="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
代码语言:javascript复制#设置内嵌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
对应的启动文件:
代码语言:javascript复制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 //开启dubo的配置
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
对应的controller
代码语言:javascript复制package com.englishcode.springboot.service;
import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @author cyl
* @version 1.0
* @date 2020/10/27 11:21
*/
@Controller
public class StudentController {
@Reference(interfaceClass = StudentService.class,version = "1.0.0",check = false) //相当于从注册中心要引用哪个方法
private StudentService studentService;
@RequestMapping("")
public @ResponseBody Object studentCount(){
Integer all = studentService.queryAllStudentCount();
return "学生总人数:" all;
}
}
注意:在配置文件中设置的那个server.port不能相同会冲突,代码中已经设置为不相同了。
开始运行: 运行步骤:注册中心(zookeeper)运行,然后运行服务提供者,最后运行服务消费者,然后通过网页访问查看是否成功。 第一步,zookeeper运行起来如下:
这就代表运行成功了
第二步:运行服务提供者:
第三步:运行服务消费者
最后一步:访问网页
完美结束,你,学会了吗