Todos los productos
Search
Centro de documentos

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

Última actualización: Sep 08, 2026

Este tutorial muestra cómo construir un proveedor y un consumidor de servicios Dubbo mediante anotaciones de Spring Boot y Nacos como registro de servicios. Posteriormente, se explica cómo desplegar la aplicación en Enterprise Distributed Application Service (EDAS). Usted puede elegir el registro y gestionar las configuraciones según los requisitos de su negocio.

Si ya cuenta con una aplicación Dubbo basada en Spring Boot, omita este tema y despliegue la aplicación directamente en EDAS.

Inicio rápido con el proyecto de demostración

Clone la demostración precompilada para omitir la configuración manual:

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

Como alternativa, descargue el archivo ZIP. La demostración de este tutorial se encuentra en alibabacloud-microservice-demo/microservice-doc-demo/dubbo-samples-spring-boot.

Para generar un nuevo proyecto de Spring Boot con las dependencias obligatorias preconfiguradas, utilice Cloud Native App Initializer.

Requisitos previos

Antes de empezar, compruebe que cuenta con lo siguiente:

  • Maven instalado y con las variables de entorno configuradas.

  • La versión más reciente de Nacos Server descargada e iniciada en modo independiente:

    1. Extraiga el paquete de Nacos Server que descargó.

    2. Vaya al directorio nacos/bin.

    3. Inicie el servidor:

      • Linux, UNIX o macOS: ejecute sh startup.sh -m standalone.

      • Windows: en startup.cmd, establezca set MODE="standalone" y luego ejecute el archivo.

  • (Opcional) Interconexión configurada entre las aplicaciones locales y las de la nube.

  • Opcional:

    • Usted puede usar Cloud-native App Scaffolding para crear un proyecto de Spring Boot. Para obtener más información, consulte Detalles.

    • Cuando desarrolla aplicaciones de forma local, puede utilizar el plugin Alibaba Cloud Toolkit para habilitar llamadas mutuas entre las aplicaciones locales y las aplicaciones desplegadas en EDAS. A esto se le conoce como interconexión de extremo a nube. De esta manera, no necesita configurar una VPN y mejora la eficiencia del desarrollo. Para obtener más información, consulte Overview of end-to-cloud interconnection.

Crear un proveedor de servicios

Paso 1: Configurar el proyecto de Maven

Cree un proyecto de Maven llamado spring-boot-dubbo-provider y agregue a continuación las dependencias en pom.xml. Este ejemplo utiliza 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>

Paso 2: Definir la interfaz del servicio

En src/main/java, cree el paquete com.alibaba.edas.boot y agregue la interfaz IHelloService:

package com.alibaba.edas.boot;

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

Paso 3: Implementar el servicio

En el mismo paquete, cree IHelloServiceImpl para implementar la interfaz:

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

La anotación @Service que se usa aquí es com.alibaba.dubbo.config.annotation.Service de Apache Dubbo, y no la anotación @Service de Spring Framework.

Paso 4: Configurar la aplicación

Cree application.properties (o application.yaml) en 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 continuación se describe cada propiedad en la tabla.

Propiedad

Descripción

dubbo.scan.basePackages

Paquetes donde se buscan com.alibaba.dubbo.config.annotation.Service y com.alibaba.dubbo.config.annotation.Reference. Separe varios paquetes con comas (,). Obligatorio; sin valor predeterminado.

dubbo.application.name

Nombre de la aplicación registrado en Nacos. Obligatorio; sin valor predeterminado.

dubbo.registry.address

Debe comenzar con nacos://, seguido de la dirección IP y el puerto de Nacos Server. Para el desarrollo local, use 127.0.0.1:8848. Cuando despliega en EDAS con un registro gestionado por EDAS, este reemplaza automáticamente dicha dirección. Si utiliza un registro de Nacos autogestionado, sustituya este valor por la dirección de su registro. Obligatorio; sin valor predeterminado.

Paso 5: Crear la clase de entrada de la aplicación

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

}

Paso 6: Comprobar el proveedor

Abra la consola de Nacos en http://127.0.0.1:8848 y haga clic en Services en el panel de navegación izquierdo. Confirme que com.alibaba.edas.boot.IHelloService aparece en la lista de servicios con el grupo de servicios y la dirección IP del proveedor correctos.

Crear un consumidor de servicios

Paso 1: Configurar el proyecto de Maven

Cree un proyecto de Maven llamado spring-boot-dubbo-consumer y agregue a continuación las dependencias en pom.xml. Este ejemplo utiliza 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

Spring Boot 1.x llegó al final de su ciclo de vida en agosto de 2019. Si necesita usar Spring Boot 1.x, utilice la versión 1.5.x junto con com.alibaba.boot:dubbo-spring-boot-starter versión 0.1.0. Se recomienda actualizar a una versión más reciente.

Paso 2: Definir la interfaz del servicio

En src/main/java, cree el paquete com.alibaba.edas.boot y agregue la misma interfaz IHelloService que utilizó en el proveedor:

package com.alibaba.edas.boot;

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

Paso 3: Implementar la llamada al servicio

Cree un controlador REST que llame al servicio 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

La anotación @Reference corresponde a com.alibaba.dubbo.config.annotation.Reference de Apache Dubbo.

Paso 4: Configurar la aplicación

Agregue a continuación las propiedades en application.properties o application.yaml:

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

Propiedad

Descripción

dubbo.application.name

Nombre de la aplicación registrado en Nacos. Obligatorio; sin valor predeterminado.

dubbo.registry.address

Debe comenzar con nacos://, seguido de la dirección IP y el puerto de Nacos Server. Sustituya 127.0.0.1 por la dirección de su Nacos Server si este se ejecuta en otra máquina. Obligatorio; sin valor predeterminado.

Paso 5: Crear la clase de entrada de la aplicación

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

}

Paso 6: Comprobar el consumidor

Abra la consola de Nacos en http://127.0.0.1:8848 y haga clic en Services en el panel de navegación izquierdo. Confirme que com.alibaba.edas.boot.IHelloService aparece en la lista de servicios con el grupo de servicios y la dirección IP del llamante correctos.

Probar la configuración local

Una vez que el proveedor y el consumidor estén en ejecución, envíe una solicitud de prueba:

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

Respuesta esperada:

Hello, EDAS (from Dubbo with Spring Boot)

Desplegar en EDAS

Nota

Application Configuration Management (ACM), integrado en EDAS, proporciona una versión comercial de Nacos. Cuando usted despliega en EDAS, este reemplaza automáticamente la dirección local de Nacos Server (127.0.0.1:8848) por la dirección del registro gestionado.

EDAS admite el despliegue en los siguientes tipos de clúster. Elija el tipo de clúster y el método de despliegue según sus necesidades.

Tipo de clúster

Documentación

Elastic Compute Service (ECS)

Deploy to an ECS cluster

Container Service for Kubernetes (ACK)

Deploy to a Kubernetes cluster

Empaquetar la aplicación para el despliegue desde la consola

Para desplegar mediante la consola de EDAS, agregue el plugin de Maven de Spring Boot en pom.xml y compile el paquete JAR antes de cargarlo.

**Archivo pom.xml del proveedor:**

<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>

**Archivo pom.xml del 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>

Compile el paquete JAR:

mvn clean package

Nota sobre la migración

Evite usar edas-dubbo-extension para desplegar aplicaciones Dubbo en EDAS. Esta extensión no es compatible con funciones de EDAS como la gobernanza de servicios Dubbo. En su lugar, migre a Nacos.