Tous les produits
Search
Centre de documentation

Serverless App Engine:Use Spring Boot to develop Dubbo applications

Dernière mise à jour :Aug 11, 2026

Utilisez les annotations Spring Boot pour créer de zéro un fournisseur et un consommateur de services Dubbo, les enregistrer auprès de Nacos, puis les déployer sur SAE. Cette approche élimine le besoin d'une configuration XML verbeuse et constitue un excellent point de départ si vous débutez avec Maven ou le framework Dubbo.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Maven installé et ses variables d'environnement configurées

  • La dernière version de Nacos Server téléchargée et exécutée en mode autonome :

    1. Décompressez l'archive Nacos Server.

    2. Accédez au répertoire nacos/bin.

    3. Démarrez Nacos Server :

      • Linux, UNIX ou macOS : exécutez sh startup.sh -m standalone

      • Windows : définissez set MODE="standalone" dans startup.cmd, puis exécutez le fichier

Projet de démonstration

Suivez les étapes de cette rubrique pour construire le projet de zéro, ou téléchargez directement le projet de démonstration. Vous pouvez également cloner le dépôt :

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

La démonstration associée à cette rubrique se trouve dans alibabacloud-microservice-demo/microservice-doc-demo/dubbo-samples-spring-boot.

Créer un fournisseur de services

Étape 1 : Configurer le projet

Créez un projet Maven nommé spring-boot-dubbo-provider et ajoutez les dépendances suivantes au fichier pom.xml. Cet exemple utilise 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>

Étape 2 : Définir l'interface de service

Tous les services Dubbo sont exposés via des interfaces.

  1. Dans src/main/java, créez un package nommé com.alibaba.edas.boot.

  2. Dans ce package, créez une interface nommée IHelloService :

package com.alibaba.edas.boot;

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

Étape 3 : Implémenter le service

Dans le package com.alibaba.edas.boot, créez une classe nommée IHelloServiceImpl pour implémenter 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)";
    }
}
L'annotation @Service utilisée ici est com.alibaba.dubbo.config.annotation.Service fournie par Dubbo, et non l'annotation Spring @Service .

Étape 4 : Configurer le service Dubbo

Dans src/main/resources, créez le fichier application.properties (ou application.yaml) et ajoutez les éléments suivants :

# 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
Les trois éléments de configuration sont obligatoires ; aucun ne possède de valeur par défaut.
dubbo.scan.basePackages : spécifie le ou les packages contenant les annotations @Service et @Reference . Séparez plusieurs packages par des virgules.
dubbo.registry.address : doit commencer par nacos:// , suivi de l'adresse IP et du port du serveur Nacos. Si vous utilisez le registre géré par SAE, SAE remplace automatiquement cette adresse lors de l'exécution. Si vous utilisez une instance Nacos auto-gérée, remplacez 127.0.0.1:8848 par son adresse IP et son port.

Étape 5 : Démarrer le fournisseur

Créez la classe principale Spring Boot DubboProvider et exécutez-la :

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

Vérifier le fournisseur

Connectez-vous à la console Nacos à l'adresse http://127.0.0.1:8848. Dans le volet de navigation de gauche, cliquez sur Services. Confirmez que com.alibaba.edas.boot.IHelloService apparaît dans la liste des services, ainsi que son groupe de services et l'adresse IP du fournisseur.

Créer un consommateur de services

Étape 1 : Configurer le projet

Créez un projet Maven nommé spring-boot-dubbo-consumer et ajoutez les dépendances suivantes au fichier pom.xml. Cet exemple utilise également 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 vous devez utiliser Spring Boot 1.x, utilisez Spring Boot 1.5.x avec com.alibaba.boot:dubbo-spring-boot-starter:0.1.0 . Notez que le cycle de vie de Spring Boot 1.x s'est terminé en août 2019 ; il est fortement recommandé d'utiliser une version plus récente.

Étape 2 : Référencer l'interface de service

Dans src/main/java, créez le package com.alibaba.edas.boot et ajoutez la même interface IHelloService que celle du fournisseur :

package com.alibaba.edas.boot;

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

Étape 3 : Appeler le service distant

Créez un contrôleur qui utilise l'annotation @Reference pour injecter le IHelloService distant et l'exposer 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);
    }
}
L'annotation @Reference utilisée ici est com.alibaba.dubbo.config.annotation.Reference fournie par Dubbo.

Étape 4 : Configurer le consommateur

Dans src/main/resources, ajoutez les éléments suivants au fichier application.properties (ou application.yaml) :

dubbo.application.name=dubbo-consumer-demo
dubbo.registry.address=nacos://127.0.0.1:8848
Les deux éléments de configuration sont obligatoires. Si le serveur Nacos s'exécute sur un hôte différent, remplacez 127.0.0.1:8848 par l'adresse IP et le port réels.

Étape 5 : Démarrer le consommateur

Créez la classe principale Spring Boot DubboConsumer et exécutez-la :

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

Vérifier le consommateur

Connectez-vous à la console Nacos à l'adresse http://127.0.0.1:8848. Dans le volet de navigation de gauche, cliquez sur Services. Confirmez que com.alibaba.edas.boot.IHelloService apparaît dans la liste des services, ainsi que son groupe de services et l'adresse IP de l'appelant.

Vérifier l'invocation du service

Une fois le fournisseur et le consommateur en cours d'exécution, envoyez une requête de test :

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

Résultat attendu :

Hello, SAE (from Dubbo with Spring Boot)

Déployer sur SAE

SAE remplace automatiquement le registre Nacos local par le registre de services SAE lors de l'exécution, ce qui évite toute modification du code.

Avant de déployer via la console, compilez chaque application dans un package JAR ou WAR exécutable :

  1. Ajoutez le plugin de packaging Maven au fichier pom.xml. Fournisseur :

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

    Consommateur :

    <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. Exécutez mvn clean package pour générer le fichier JAR.

  3. Déployez le package sur SAE. Pour connaître les options de déploiement, consultez la section Déploiement d'applications.

Étapes suivantes