Todos os produtos
Search
Central de documentação

Enterprise Distributed Application Service:Develop a Dubbo microservices application with Spring Boot

Última atualização: Jun 26, 2026

Este tutorial demonstra como criar um provedor e um consumidor de serviços Dubbo usando anotações do Spring Boot e o Nacos como registro de serviços para, em seguida, implantar no Enterprise Distributed Application Service (EDAS). Escolha o registro e gerencie as configurações conforme as necessidades do seu negócio.

Se você já tem uma aplicação Dubbo baseada em Spring Boot, ignore este tópico e implante a aplicação diretamente no EDAS.

Início rápido com o projeto de demonstração

Clone a demonstração pré-construída para evitar a configuração manual:

git clone https://github.com/aliyun/alibabacloud-microservice-demo.git
cd alibabacloud-microservice-demo/microservice-doc-demo/dubbo-samples-spring-boot

Alternativamente, baixe o arquivo ZIP. A demonstração deste tutorial está em alibabacloud-microservice-demo/microservice-doc-demo/dubbo-samples-spring-boot.

Para gerar um novo projeto Spring Boot com as dependências necessárias pré-configuradas, use o Cloud Native App Initializer.

Pré-requisitos

Antes de começar, verifique se você tem:

  • O Maven instalado e com as variáveis de ambiente configuradas

  • A versão mais recente do Nacos Server baixada e iniciada no modo standalone:

    1. Extraia o pacote do Nacos Server baixado.

    2. Acesse o diretório nacos/bin.

    3. Inicie o servidor:

      • Linux, UNIX ou macOS: Execute sh startup.sh -m standalone.

      • Windows: No arquivo startup.cmd, defina set MODE="standalone" e execute o arquivo.

  • (Opcional) Interconexão entre aplicações locais e na nuvem configurada

  • Opcional:

    • Use o Cloud-native App Scaffolding para criar um projeto Spring Boot. Para mais informações, consulte Detalhes.

    • Durante o desenvolvimento local, use o plug-in Alibaba Cloud Toolkit para permitir chamadas mútuas entre aplicações locais e aplicações implantadas no EDAS (interconexão ponta a nuvem). Assim, você evita configurar uma VPN e aumenta a eficiência do desenvolvimento. Para mais informações, consulte Visão geral da interconexão ponta a nuvem.

Crie um provedor de serviços

Etapa 1: Configure o projeto Maven

Crie um projeto Maven chamado spring-boot-dubbo-provider e adicione as seguintes dependências ao arquivo pom.xml. Este exemplo usa o 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>

Etapa 2: Defina a interface de serviço

Em src/main/java, crie o pacote com.alibaba.edas.boot e adicione a interface IHelloService:

package com.alibaba.edas.boot;

public interface IHelloService {
    String sayHello(String str);
}

Etapa 3: Implemente o serviço

No mesmo pacote, crie a classe IHelloServiceImpl para implementar a interface:

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)";
    }
}
Nota

A anotação @Service usada aqui é com.alibaba.dubbo.config.annotation.Service do Apache Dubbo, não a anotação @Service do Spring Framework.

Etapa 4: Configure a aplicação

Crie o arquivo application.properties (ou application.yaml) em src/main/resources:

# 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

A tabela a seguir descreve cada propriedade.

Propriedade

Descrição

dubbo.scan.basePackages

Pacotes a serem verificados em busca de com.alibaba.dubbo.config.annotation.Service e com.alibaba.dubbo.config.annotation.Reference. Separe vários pacotes com vírgulas (,). Obrigatório; sem valor padrão.

dubbo.application.name

Nome da aplicação registrado no Nacos. Obrigatório; sem valor padrão.

dubbo.registry.address

Deve começar com nacos://, seguido pelo endereço IP e porta do Nacos Server. Para desenvolvimento local, use 127.0.0.1:8848. Ao implantar no EDAS com um registro gerenciado pelo próprio EDAS, o sistema substitui esse endereço automaticamente. Para um registro Nacos autogerenciado, substitua este valor pelo endereço do seu registro. Obrigatório; sem valor padrão.

Etapa 5: Crie a classe de entrada da aplicação

package com.alibaba.edas.boot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DubboProvider {

    public static void main(String[] args) {
        SpringApplication.run(DubboProvider.class, args);
    }

}

Etapa 6: Verifique o provedor

Abra o console do Nacos em http://127.0.0.1:8848 e clique em Services no painel de navegação à esquerda. Confirme se com.alibaba.edas.boot.IHelloService aparece na lista de serviços com o grupo de serviços e o endereço IP do provedor corretos.

Crie um consumidor de serviços

Etapa 1: Configure o projeto Maven

Crie um projeto Maven chamado spring-boot-dubbo-consumer e adicione as seguintes dependências ao arquivo pom.xml. Este exemplo usa o 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-web</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>
Nota

O Spring Boot 1.x atingiu o fim da vida útil em agosto de 2019. Se for necessário usar o Spring Boot 1.x, utilize a versão 1.5.x com com.alibaba.boot:dubbo-spring-boot-starter versão 0.1.0. Recomendamos atualizar para uma versão mais recente.

Etapa 2: Defina a interface de serviço

Em src/main/java, crie o pacote com.alibaba.edas.boot e adicione a mesma interface IHelloService usada no provedor:

package com.alibaba.edas.boot;

public interface IHelloService {
    String sayHello(String str);
}

Etapa 3: Implemente a chamada de serviço

Crie um controlador REST que chame o serviço Dubbo remoto:

package com.alibaba.edas.boot;

import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class DemoConsumerController {

    @Reference
    private IHelloService demoService;

    @RequestMapping("/sayHello/{name}")
    public String sayHello(@PathVariable String name) {
        return demoService.sayHello(name);
    }
}
Nota

A anotação @Reference é com.alibaba.dubbo.config.annotation.Reference do Apache Dubbo.

Etapa 4: Configure a aplicação

Adicione as seguintes propriedades ao arquivo application.properties ou application.yaml:

dubbo.application.name=dubbo-consumer-demo
dubbo.registry.address=nacos://127.0.0.1:8848

Propriedade

Descrição

dubbo.application.name

Nome da aplicação registrado no Nacos. Obrigatório; sem valor padrão.

dubbo.registry.address

Deve começar com nacos://, seguido pelo endereço IP e porta do Nacos Server. Substitua 127.0.0.1 pelo endereço do seu Nacos Server caso ele esteja em execução em outra máquina. Obrigatório; sem valor padrão.

Etapa 5: Crie a classe de entrada da aplicação

package com.alibaba.edas.boot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DubboConsumer {

    public static void main(String[] args) {
        SpringApplication.run(DubboConsumer.class, args);
    }

}

Etapa 6: Verifique o consumidor

Abra o console do Nacos em http://127.0.0.1:8848 e clique em Services no painel de navegação à esquerda. Confirme se com.alibaba.edas.boot.IHelloService aparece na lista de serviços com o grupo de serviços e o endereço IP do chamador corretos.

Teste a configuração local

Depois que o provedor e o consumidor estiverem em execução, envie uma solicitação de teste:

curl http://localhost:8080/sayHello/EDAS

Resposta esperada:

Hello, EDAS (from Dubbo with Spring Boot)

Implante no EDAS

Nota

O Application Configuration Management (ACM), integrado ao EDAS, fornece uma versão comercial do Nacos. Ao implantar no EDAS, o sistema substitui automaticamente o endereço do Nacos Server local (127.0.0.1:8848) pelo endereço do registro gerenciado.

O EDAS oferece suporte à implantação nos seguintes tipos de cluster. Escolha o tipo de cluster e o método de implantação adequados às suas necessidades.

Tipo de cluster

Documentação

Elastic Compute Service (ECS)

Implantar em um cluster ECS

Container Service for Kubernetes (ACK)

Implantar em um cluster Kubernetes

Empacote a aplicação para implantação via console

Para implantar pelo console do EDAS, adicione o plug-in Maven do Spring Boot ao arquivo pom.xml e gere o pacote JAR antes de fazer o upload.

**Arquivo pom.xml do Provedor:**

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                    <configuration>
                        <classifier>spring-boot</classifier>
                        <mainClass>com.alibaba.edas.boot.DubboProvider</mainClass>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

**Arquivo pom.xml do Consumidor:**

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                    <configuration>
                        <classifier>spring-boot</classifier>
                        <mainClass>com.alibaba.edas.boot.DubboConsumer</mainClass>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Gere o pacote JAR:

mvn clean package

Nota sobre migração

Evite usar edas-dubbo-extension para implantar aplicações Dubbo no EDAS. Essa extensão não oferece suporte a recursos do EDAS, como governança de serviços Dubbo. Migre para o Nacos.