史上最简单的dubbo整合教程

今天教大家,SpringBoot如何集成Dubbo,集成的过程大致可以分如下四步。

1. pom文件中添加springboot和dubbo相关依赖。

2. 编写服务的接口和接口实现类。

3. 配置dubbo的配置文件。

4. 测试RPC调用是否成功。

1.pom文件添加依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>com.example</groupId>

<artifactId>springboot-dubbo</artifactId>

<version>1.0.0</version>

<packaging>pom</packaging>

<name>SpringBoot-Dubbo</name>

<description>Dubbo Demo project for Spring Boot</description>

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>1.5.1.RELEASE</version>

<relativePath/>

</parent>

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<java.version>1.8</java.version>

</properties>

<dependencies>

<!--spring-boot-starter-web依赖-->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<!--单元测试依赖-->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-test</artifactId>

<scope>test</scope>

</dependency>

<!--dubbo依赖-->

<dependency>

<groupId>io.dubbo.springboot</groupId>

<artifactId>spring-boot-starter-dubbo</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>

主要是SpringBoot和Dubbo的依赖

2.编写接口和接口实现类

这里大家要进行区分的是:项目分为两个部分,一个是服务消费者、一个是服务提供者。下面我们首先来看服务消费者:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.example.demo.service;

/**

* dubboe消费者接口

* @author linzhiqiang

* @date 2018/7/29

*/

public interface TestService {

/**

* 接口测试test

* @param str

* @return

*/

String test(String str);

}

服务消费者只要实现一个和服务提供者一模一样的接口就可以了。

下面我们看服务提供者:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.example.demo.service;

/**

* dubboe消费者的接口

* @author linzhiqiang

* @date 2018/7/29

*/

public interface TestService {

/**

* 接口测试test

* @param str

* @return

*/

String test(String str);

}

服务提供者的接口实现类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.example.demo.service.impl;

import com.alibaba.dubbo.config.annotation.Service;

import com.example.demo.service.TestService;

/**

* 接口提供者的实现类

* @author linzhiqiang

* @date 2018/7/29

*/

@Service

public class TestServiceImpl implements TestService{

@Override

public String test(String str) {

System.out.println("客户端传过来的值是:"+str);

return "服务端已经接收到值,接收的值为:"+str;

}

}

这边有一点需要注意的是:接口实现类必须实现@Service注解,而且@Service必须是dubbo的。

3.添加配置文件

添加配置文件,这边的配置文件也分为俩部分,一个是服务消费者的、一个是服务提供者的。

下面我们先看服务提供者的配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
server:

#服务端口号

port: 8081

spring:

dubbo:

application:

#ubbo应用名称

name: dubbo-provider-name

#是否是服务端

server: true

#注解扫描路径

scan: com.example

#注册中心的地址

registry:

#zookeeper地址

address: zookeeper://127.0.0.1

#zookeeper端口号

port: 2181

protocol:

#dubbo注册名称

name: dubbo

#dubbo注册端口号

port: 20896

服务消费者配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
server:

#服务端口号

port: 8080

spring:

dubbo:

application:

#ubbo应用名称

name: platform-team-controller

#注册中心的地址

registry:

#zookeeper地址

address: zookeeper://127.0.0.1

#zookeeper端口号

port: 2181

#注解扫描路径

scan: com.example

protocol:

#dubbo注册名称

name: dubbo

4.RPC测试

测试RPC调用是否成功,我们首先在服务消费者添加接口测试控制类,控制类代码如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.example.demo.controller;

import com.alibaba.dubbo.config.annotation.Reference;

import com.example.demo.service.TestService;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

/**

* 测试的控制类

* @author linzhiqiang

* @date 2018/7/29

*/

@RestController

@RequestMapping("test")

public class TestController {

@Reference

private TestService testService;

@RequestMapping("test1")

public String test(){

return testService.test("test");

}

}





测试控制类有一点需要注意,接口上面一定要添加@Reference注解。



然后我们先启动zookeeper(我的版本号是3.4.12),启动界面如下所示:

















接下来我们先启动服务提供者,再启动服务消费者。如果服务启动成功,zookeeper中会有消息插入,消息如下所示:
















打来浏览器,输入我们的测试地址,浏览器中我们可以看到如下内容:
















出现上面内容,说明我们服务消费者成功的请求到了服务提供者的服务。






更多内容敬请关注:“林老师带你学编程

林老师带你学编程 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!