Dubbo3 入门实践:如何使用 Spring Boot 方式快速开发 Dubbo 应用

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: > 示例演示了如何使用 Spring Boot 方式快速开发 Dubbo 应用> Dubbo 还提供了包括[XML](../../reference-manual/config/xml)、[API](../../reference-manual/config/api)等多种启动与接入方式,更多开发方式和配置细节可参见[配置手册](../../reference-manual/config/)。
示例演示了如何使用 Spring Boot 方式快速开发 Dubbo 应用

Dubbo 还提供了包括XML、API等多种启动与接入方式,更多开发方式和配置细节可参见配置手册。

下载示例代码

  1. 下载源码
git clone -b master https://github.com/apache/dubbo-samples.git
  1. 进入示例目录
cd dubbo-samples/dubbo-samples-spring-boot
ls # 查看目录结构

快速运行示例

  1. 编译 Provider

在 dubbo-samples-spring-boot 目录执行 maven 命令

mvn clean package
  1. 运行 Provider

进入 dubbo-samples-spring-boot-provider/target 目录并启动 java 进程

cd ./dubbo-samples-spring-boot-provider
java -jar ./target/dubbo-samples-spring-boot-provider-1.0-SNAPSHOT.jar
  1. 运行 consumer

进入 dubbo-samples-spring-boot-consumer 目录并启动 java 进程

java -jar ./target/dubbo-samples-spring-boot-consumer-1.0-SNAPSHOT.jar
  1. 查看结果

在 consumer 侧会输出如下信息:

result: Hello World

在 provider 侧会输出如下信息:

Hello World, request from consumer: xxx.xxx.xxx.xxx

至此就把 Dubbo 的基本功能都实现了,可以在 Dubbo 的基础上进行更多的开发。

示例核心流程

1. 定义服务接口

dubbo-samples-spring-boot-interface/DemoService.java

package org.apache.dubbo.samples.basic.api;

public interface DemoService {
    String sayHello(String name);
}

2. 提供方实现接口并暴露服务

dubbo-samples-spring-boot-provider/DemoServiceImpl.java

@DubboService
public class DemoServiceImpl implements DemoService {
    @Override
    public String sayHello(String name) {
        System.out.println("Hello " + name + ", request from consumer: " + RpcContext.getContext().getRemoteAddress());
        return "Hello " + name;
    }
}

3. 配置 application.yml 文件

dubbo-samples-spring-boot-provider/resources/application.yml

dubbo:
  application:
    name: dubbo-springboot-demo-provider
  protocol:
    name: dubbo
    port: -1
  registry:
    id: zk-registry
    address: zookeeper://127.0.0.1:2181
  config-center:
    address: zookeeper://127.0.0.1:2181
  metadata-report:
    address: zookeeper://127.0.0.1:2181

4. 定义 Spring Boot 主函数

dubbo-samples-spring-boot-provider/ProviderApplication.java

@SpringBootApplication
@EnableDubbo
public class ProviderApplication {
    public static void main(String[] args) throws Exception {
        new EmbeddedZooKeeper(2181, false).start();

        SpringApplication.run(ProviderApplication.class, args);
        System.out.println("dubbo service started");
        new CountDownLatch(1).await();
    }
}

其中,@EnableDubbo 必须配置。

5. 引用远程服务

dubbo-samples-spring-boot-consumer/ConsumerApplication.java

public class ConsumerApplication {
    @DubboReference
    private DemoService demoService;
}

6. 定义 application.yml

dubbo-samples-spring-boot-consumer/application.yml

dubbo:
  application:
    name: dubbo-springboot-demo-consumer
  protocol:
    name: dubbo
    port: -1
  registry:
    id: zk-registry
    address: zookeeper://127.0.0.1:2181
  config-center:
    address: zookeeper://127.0.0.1:2181
  metadata-report:
    address: zookeeper://127.0.0.1:2181

7. 加载 Spring 配置,并调用远程服务

dubbo-samples-spring-boot-consumer/ConsumerApplication.java

@SpringBootApplication
@Service
@EnableDubbo
public class ConsumerApplication {
    @DubboReference
    private DemoService demoService;
    
    public String doSayHello(String name) {
        return demoService.sayHello(name);
    }

    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(ConsumerApplication.class, args);
        ConsumerApplication application = context.getBean(ConsumerApplication.class);
        String result = application.doSayHello("world");
        System.out.println("result: " + result);
    }
}

其中,@EnableDubbo 必须配置。

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
30天前
|
Java 应用服务中间件 API
【潜意识Java】javaee中的SpringBoot在Java 开发中的应用与详细分析
本文介绍了 Spring Boot 的核心概念和使用场景,并通过一个实战项目演示了如何构建一个简单的 RESTful API。
41 5
|
1月前
|
人工智能 自然语言处理 Java
Spring Cloud Alibaba AI 入门与实践
本文将介绍 Spring Cloud Alibaba AI 的基本概念、主要特性和功能,并演示如何完成一个在线聊天和在线画图的 AI 应用。
357 7
|
2月前
|
存储 安全 Java
Spring Security 入门
Spring Security 是 Spring 框架中的安全模块,提供强大的认证和授权功能,支持防止常见攻击(如 CSRF 和会话固定攻击)。它通过过滤器链拦截请求,核心概念包括认证、授权和自定义过滤器。配置方面,涉及密码加密、用户信息服务、认证提供者及过滤器链设置。示例代码展示了如何配置登录、注销、CSRF防护等。常见问题包括循环重定向、静态资源被拦截和登录失败未返回错误信息,解决方法需确保路径正确和添加错误提示逻辑。
Spring Security 入门
|
2月前
|
Java 数据库连接 数据库
从入门到精通---深入剖析Spring DAO
在Java企业级开发中,Spring框架以其强大的功能和灵活性,成为众多开发者的首选。Spring DAO(Data Access Object)作为Spring框架中处理数据访问的重要模块,对JDBC进行了抽象封装,极大地简化了数据访问异常的处理,并能统一管理JDBC事务。本文将从概述、功能点、背景、业务点、底层原理等多个方面深入剖析Spring DAO,并通过多个Java示例展示其应用实践,同时指出对应实践的优缺点。
34 1
|
2月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
103 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
3月前
|
监控 Java 数据安全/隐私保护
如何用Spring Boot实现拦截器:从入门到实践
如何用Spring Boot实现拦截器:从入门到实践
84 5
|
3月前
|
消息中间件 Java Kafka
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
86 1
|
3月前
|
JSON 安全 算法
Spring Boot 应用如何实现 JWT 认证?
Spring Boot 应用如何实现 JWT 认证?
108 8
|
3月前
|
Java Docker 微服务
利用Docker容器化部署Spring Boot应用
利用Docker容器化部署Spring Boot应用
72 0
|
3月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
231 2