Todos os produtos
Search
Central de documentação

Serverless App Engine:Use Spring Boot to develop Dubbo applications

Última atualização: Jun 28, 2026

Use anotações do Spring Boot para criar um provedor e um consumidor de serviços Dubbo do zero, registrá-los no Nacos e implantá-los no SAE. Essa abordagem elimina a necessidade de configurações XML extensas e é um excelente ponto de partida para quem está começando com Maven ou com o framework Dubbo.

Pré-requisitos

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

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

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

    1. Descompacte o pacote do Nacos Server.

    2. Acesse o diretório nacos/bin.

    3. Inicie o Nacos Server:

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

      • Windows: Defina set MODE="standalone" no arquivo startup.cmd e execute-o

Projeto de demonstração

Siga as etapas deste tópico para criar o projeto do zero ou baixe diretamente o projeto de demonstração. Você também pode clonar o repositório:

git clone https://github.com/aliyun/alibabacloud-microservice-demo.git

O código de demonstração deste tópico está em alibabacloud-microservice-demo/microservice-doc-demo/dubbo-samples-spring-boot.

Crie um provedor de serviços

Etapa 1: Configure o projeto

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 do serviço

Todos os serviços Dubbo são expostos por meio de interfaces.

  1. Em src/main/java, crie um pacote chamado com.alibaba.edas.boot.

  2. Nesse pacote, crie uma interface chamada IHelloService:

package com.alibaba.edas.boot;

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

Etapa 3: Implemente o serviço

No pacote com.alibaba.edas.boot, crie uma classe chamada IHelloServiceImpl para implementar IHelloService:

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)";
    }
}
A anotação @Service usada aqui é a com.alibaba.dubbo.config.annotation.Service fornecida pelo Dubbo, e não a anotação @Service do Spring.

Etapa 4: Configure o serviço Dubbo

Em src/main/resources, crie o arquivo application.properties (ou application.yaml) e adicione:

# Packages to scan for Dubbo annotations (@Service, @Reference)
dubbo.scan.basePackages=com.alibaba.edas.boot
dubbo.application.name=dubbo-provider-demo
dubbo.registry.address=nacos://127.0.0.1:8848
Os três itens de configuração são obrigatórios e nenhum tem valores padrão.
dubbo.scan.basePackages : define os pacotes que contêm as anotações @Service e @Reference . Separe vários pacotes com vírgulas.
dubbo.registry.address : deve começar com nacos:// , seguido do endereço IP e da porta do Nacos Server. Se você usar o registro gerenciado pelo SAE, o sistema substituirá automaticamente esse endereço em tempo de execução. Caso utilize uma instância Nacos autogerenciada, substitua 127.0.0.1:8848 pelo endereço IP e porta correspondentes.

Etapa 5: Inicie o provedor

Crie a classe principal do Spring Boot chamada DubboProvider e execute-a:

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

Verifique o provedor

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

Crie um consumidor de serviços

Etapa 1: Configure o projeto

Crie um projeto Maven chamado spring-boot-dubbo-consumer e adicione as seguintes dependências ao arquivo pom.xml. Este exemplo também 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>
Se precisar usar o Spring Boot 1.x, utilize a versão 1.5.x com com.alibaba.boot:dubbo-spring-boot-starter:0.1.0 . O ciclo de vida do Spring Boot 1.x terminou em agosto de 2019, portanto, recomendamos fortemente o uso de uma versão mais recente.

Etapa 2: Referencie a interface do 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: Chame o serviço remoto

Crie um controlador que use a anotação @Reference para injetar o serviço remoto IHelloService e exponha-o via HTTP:

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);
    }
}
A anotação @Reference usada aqui é a com.alibaba.dubbo.config.annotation.Reference fornecida pelo Dubbo.

Etapa 4: Configure o consumidor

Em src/main/resources, adicione o seguinte conteúdo ao arquivo application.properties (ou application.yaml):

dubbo.application.name=dubbo-consumer-demo
dubbo.registry.address=nacos://127.0.0.1:8848
Ambos os itens de configuração são obrigatórios. Se o Nacos Server estiver em execução em um host diferente, substitua 127.0.0.1:8848 pelo endereço IP e porta reais.

Etapa 5: Inicie o consumidor

Crie a classe principal do Spring Boot chamada DubboConsumer e execute-a:

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

Verifique o consumidor

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

Verifique a invocação do serviço

Depois de iniciar o provedor e o consumidor, envie uma solicitação de teste:

curl http://localhost:8080/sayHello/SAE

Saída esperada:

Hello, SAE (from Dubbo with Spring Boot)

Implante no SAE

O SAE substitui automaticamente o registro Nacos local pelo registro de serviços do SAE durante a execução, portanto, nenhuma alteração no código é necessária.

Antes de implantar via console, compile cada aplicação em um pacote JAR ou WAR executável:

  1. Adicione o plugin de empacotamento do Maven ao arquivo pom.xml. 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>

    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>
  2. Execute mvn clean package para gerar o arquivo JAR.

  3. Implante o pacote no SAE. Para opções de implantação, consulte Implantação de aplicações.

Próximos passos