Todos los productos
Search
Centro de documentos

Serverless App Engine:Use Spring Boot to develop Dubbo applications

Última actualización: Sep 05, 2026

Utilice las anotaciones de Spring Boot para crear desde cero un proveedor y un consumidor de servicios Dubbo, regístrelos en Nacos y despliéguelos en SAE. Este enfoque elimina la necesidad de configuraciones XML extensas y es un buen punto de partida si usted es nuevo en Maven o en el framework Dubbo.

Requisitos previos

Antes de empezar, asegúrese de que cuenta con lo siguiente:

  • Maven instalado y sus variables de entorno configuradas

  • La versión más reciente de Nacos Server descargada y ejecutándose en modo independiente:

    1. Descomprima el paquete de Nacos Server.

    2. Vaya al directorio nacos/bin.

    3. Inicie Nacos Server:

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

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

Proyecto de demostración

Siga los pasos de este tema para crear el proyecto desde cero, o descargue directamente el proyecto de demostración. También puede clonar el repositorio:

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

La demostración de este tema se encuentra en alibabacloud-microservice-demo/microservice-doc-demo/dubbo-samples-spring-boot.

Creación de un proveedor de servicios

Paso 1: Configuración del proyecto

Cree un proyecto Maven llamado spring-boot-dubbo-provider y agregue las siguientes dependencias a 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: Definición de la interfaz del servicio

Todos los servicios Dubbo se exponen mediante interfaces.

  1. En src/main/java, cree un paquete llamado com.alibaba.edas.boot.

  2. En ese paquete, cree una interfaz llamada IHelloService:

package com.alibaba.edas.boot;

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

Paso 3: Implementación del servicio

En el paquete com.alibaba.edas.boot, cree una clase llamada 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)";
    }
}
La anotación @Service utilizada aquí es com.alibaba.dubbo.config.annotation.Service proporcionada por Dubbo, no la anotación @Service de Spring.

Paso 4: Configuración del servicio Dubbo

En src/main/resources, cree application.properties (o application.yaml) y agregue lo siguiente:

# 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
Los tres elementos de configuración son obligatorios; ninguno tiene valores predeterminados.
dubbo.scan.basePackages : los paquetes que contienen las anotaciones @Service y @Reference . Separe varios paquetes con comas.
dubbo.registry.address : debe comenzar con nacos:// , seguido de la dirección IP y el puerto de Nacos Server. Si utiliza el registro administrado por SAE, este reemplaza automáticamente dicha dirección en tiempo de ejecución. Si usa una instancia de Nacos autoadministrada, sustituya 127.0.0.1:8848 por su dirección IP y puerto correspondientes.

Paso 5: Inicio del proveedor

Cree la clase principal de Spring Boot DubboProvider y ejecútela:

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

Verificación del proveedor

Inicie sesión en la consola de Nacos en http://127.0.0.1:8848. En el panel de navegación izquierdo, haga clic en Services. Compruebe que com.alibaba.edas.boot.IHelloService aparece en la lista de servicios, junto con su grupo de servicios y la dirección IP del proveedor.

Creación de un consumidor de servicios

Paso 1: Configuración del proyecto

Cree un proyecto Maven llamado spring-boot-dubbo-consumer y agregue las siguientes dependencias a pom.xml. Este ejemplo también 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>
Si necesita usar Spring Boot 1.x, utilice Spring Boot 1.5.x con com.alibaba.boot:dubbo-spring-boot-starter:0.1.0 . Tenga en cuenta que el ciclo de vida de Spring Boot 1.x finalizó en agosto de 2019, por lo que se recomienda encarecidamente usar una versión más reciente.

Paso 2: Referencia a la interfaz del servicio

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

package com.alibaba.edas.boot;

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

Paso 3: Llamada al servicio remoto

Cree un controlador que use la anotación @Reference para inyectar el servicio remoto IHelloService y exponerlo mediante 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);
    }
}
La anotación @Reference utilizada aquí es com.alibaba.dubbo.config.annotation.Reference proporcionada por Dubbo.

Paso 4: Configuración del consumidor

En src/main/resources, agregue lo siguiente a application.properties (o application.yaml):

dubbo.application.name=dubbo-consumer-demo
dubbo.registry.address=nacos://127.0.0.1:8848
Ambos elementos de configuración son obligatorios. Si Nacos Server se ejecuta en un host diferente, reemplace 127.0.0.1:8848 por la dirección IP y el puerto reales.

Paso 5: Inicio del consumidor

Cree la clase principal de Spring Boot DubboConsumer y ejecútela:

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

Verificación del consumidor

Inicie sesión en la consola de Nacos en http://127.0.0.1:8848. En el panel de navegación izquierdo, haga clic en Services. Compruebe que com.alibaba.edas.boot.IHelloService aparece en la lista de servicios, junto con su grupo de servicios y la dirección IP del llamante.

Verificación de la invocación del servicio

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

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

Salida esperada:

Hello, SAE (from Dubbo with Spring Boot)

Despliegue en SAE

SAE reemplaza automáticamente el registro local de Nacos por el registro de servicios de SAE en tiempo de ejecución, por lo que no se requieren cambios en el código.

Antes de desplegar mediante la consola, compile cada aplicación en un paquete JAR o WAR ejecutable:

  1. Agregue el plugin de empaquetado de Maven a pom.xml. 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>

    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. Ejecute mvn clean package para compilar el archivo JAR.

  3. Despliegue el paquete en SAE. Para conocer las opciones de despliegue, consulte Application deployment.

Pasos siguientes