Spring Boot简化了微服务应用的配置和部署,您可以自行选择注册中心和配置管理。本文介绍如何使用Spring Boot注解的方式基于Nacos开发一个Dubbo微服务示例应用。如果您已有Spring Boot开发的Dubbo应用,可以跳过本文内容,直接部署到EDAS。

前提条件

在使用Spring Boot开发Dubbo微服务应用前,请先完成以下工作:
  • 下载Maven并设置环境变量。
  • 下载最新版本的Nacos Server
  • 启动Nacos Server。

    1. 解压下载的Nacos Server压缩包
    2. 进入nacos/bin目录,启动Nacos Server。
      • Linux/Unix/Mac系统:执行命令sh startup.sh -m standalone
      • Windows系统:双击执行startup.cmd文件。
  • 可选:

    在本地开发应用时,可以使用Alibaba Cloud Toolkit插件实现本地应用和部署在EDAS中的应用的相互调用,即端云互联,而无需搭建VPN,帮助您提升开发效率。更多信息,请参见端云互联简介

示例工程

您可以按照本文的逐步搭建工程,也可以选择直接下载本文对应的示例工程,或者使用Git来clone:git clone https://github.com/aliyun/alibabacloud-microservice-demo.git

该项目包含了众多了示例工程,本文对应的示例工程位于alibabacloud-microservice-demo/microservice-doc-demo/dubbo-samples-spring-boot

创建服务提供者

  1. 创建命名为spring-boot-dubbo-provider的Maven工程。
  2. pom.xml文件中添加所需的依赖。

    这里以Spring Boot 2.0.6.RELEASE为例。

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.0.6.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>1.1.1</version>
        </dependency>
    </dependencies>                   
  3. 开发Dubbo服务提供者。
    Dubbo中服务都是以接口的形式提供的。
    1. src/main/java路径下创建一个packagecom.alibaba.edas.boot
    2. com.alibaba.edas.boot下创建一个接口(interface)IHelloService,里面包含一个SayHello方法。
      package com.alibaba.edas.boot;
      public interface IHelloService {
      String sayHello(String str);
      }                                
    3. com.alibaba.edas.boot下创建一个类IHelloServiceImpl,实现此接口。
      package com.alibaba.edas.boot;
      import com.alibaba.dubbo.config.annotation.Service;
      @Service
      public class IHelloServiceImpl implements IHelloService {
      public String sayHello(String name) {
        return "Hello, " + name + " (from Dubbo with Spring Boot)";
       }
      }                                
      说明 这里的Service注解是Dubbo提供的一个注解类,类的全名称为:com.alibaba.dubbo.config.annotation.Service
  4. 配置Dubbo服务。
    1. src/main/resources路径下创建application.propertiesapplication.yaml文件并打开。
    2. application.propertiesapplication.yaml中添加如下配置。
      # Base packages to scan Dubbo Components (e.g @Service , @Reference)
      dubbo.scan.basePackages=com.alibaba.edas.boot
      dubbo.application.name=dubbo-provider-demo
      dubbo.registry.address=nacos://127.0.0.1:8848                                
      说明
      • 以上三个配置没有默认值,必须要给