# spring-boot-dubbo-demo **Repository Path**: hi-liyan/spring-boot-dubbo-demo ## Basic Information - **Project Name**: spring-boot-dubbo-demo - **Description**: Dubbo 快速开始(Spring Boot整合Dubbo,Nacos作为服务注册中心) - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://www.shiguangping.com/spring-boot-dubbo.html - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-06-29 - **Last Updated**: 2022-09-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # spring-boot-dubbo-demo ## 简介 本文介绍Spring Boot项目整合Dubbo完成跨服务调用,使用Nacos作为服务注册中心。 博客原文:[Dubbo 快速开始](https://www.shiguangping.com/spring-boot-dubbo.html)
## 仓库 示例代码托管在Gitee:[spring-boot-dubbo-demo 项目地址](https://gitee.com/ENNRIAAA/spring-boot-dubbo-demo.git)
## Quick Start 1. 创建服务提供者项目`dubbo-provider`,并添加Dubbo依赖。 ```xml org.apache.dubbo dubbo-spring-boot-starter org.apache.dubbo dubbo-registry-nacos ``` 2. 启动类添加`@EnableDubbo`注解。 ```java @EnableDubbo @SpringBootApplication public class DubboProviderApplication { public static void main(String[] args) { SpringApplication.run(DubboProviderApplication.class, args); } } ``` 3. 写配置 `application.yml`。 ```yaml # 服务端口号 server: port: 8081 # 服务名称 spring: application: name: dubbo-provider dubbo: application: # 当前应用名称 name: dubbo-provider # 当前应用的版本 version: 1.0.0 # 应用负责人,用于服务治理,请填写负责人公司邮箱前缀 owner: liyan # 日志输出方式,可选:slf4j,jcl,log4j,log4j2,jdk logger: slf4j registry: # 注册中心服务器地址 address: nacos://121.196.189.156:8848 ``` 4. 写代码。 Dubbo是面向接口的跨服务调用模式,所以新建一个Maven项目`dubbo-api`,该项目用来定义rpc接口,服务提供者和消费者引用该项目。 ```java public interface ITestService { // 写一个测试方法 String test(String s); } ``` 在`dubbo-provider`的Pom中引入`dubbo-api`,之后实现该接口。实现类添加`@DubboService`注解,说明这是一个Dubbo服务,将服务注册到注册中心。 ```java @DubboService(group = "test", version = "1.0.0") public class TestServiceImpl implements ITestService { @Override public String test(String s) { return "调用成功,我是服务提供者:" + s; } } ``` 启动`dubbo-provider`项目,并打开Nacos控制台,可以看到服务已经注册到Nacos中。 ![image-20210629230357591](https://images.shiguangping.com/imgs/20210629230358.png) 5. 创建服务消费者项目`dubbo-consumer`,并添加如上依赖。 6. 启动类添加`@EnableDubbo`注解。 7. 写配置,`application.yml`。 ```yaml server: port: 8082 spring: application: name: dubbo-consumer dubbo: application: name: dubbo-consumer registry: address: nacos://121.196.189.156:8848 consumer: # 负载均衡策略 loadbalance: roundrobin ``` 8. 写代码。 同样,在`dubbo-consumer`的Pom中引入`dubbo-api`。在rpc接口上添加`@DubboReference`注解,在调用时Dubbo向注册中心获取可用的服务实例,然后通过负载均衡策略(默认是随机)调用目标实例。 ```java @RestController @RequestMapping("test") public class TestController { @DubboReference(group = "test", version = "1.0.0", timeout = 6000) private ITestService iTestService; @GetMapping("test") public String test(String str){ String test = iTestService.test(str); return test; } } ``` 使用Postman测试`dubbo-consumer`的test接口。观察返回值,说明已经成功调用了`dubbo-provider`服务。 ![image-20210629231928172](https://images.shiguangping.com/imgs/20210629231928.png)
## 参考 ### Dubbo 配置参考 - [Dubbo v2.7 配置文档](https://dubbo.apache.org/zh/docs/v2.7/user/references/xml/)