Tous les produits
Search
Centre de documentation

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

Dernière mise à jour :Aug 10, 2026

Ce tutoriel explique comment créer un fournisseur et un consommateur de services Dubbo à l'aide d'annotations Spring Boot et de Nacos comme registre de services, puis les déployer sur Enterprise Distributed Application Service (EDAS). Vous pouvez sélectionner un registre et gérer les configurations en fonction de vos besoins métier.

Si vous disposez déjà d'une application Dubbo basée sur Spring Boot, ignorez cette rubrique et déployez l'application directement sur EDAS.

Démarrage rapide avec le projet de démonstration

Clonez la démonstration préconfigurée pour éviter la configuration manuelle :

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

Vous pouvez également télécharger l'archive ZIP. La démonstration pour ce tutoriel se trouve dans alibabacloud-microservice-demo/microservice-doc-demo/dubbo-samples-spring-boot.

Pour générer un nouveau projet Spring Boot avec les dépendances requises préconfigurées, utilisez Cloud Native App Initializer.

Prérequis

Avant de commencer, assurez-vous que :

  • Maven est installé et que les variables d'environnement sont configurées

  • La dernière version de Nacos Server est téléchargée et démarrée en mode autonome :

    1. Extrayez le package Nacos Server téléchargé.

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

    3. Démarrez le serveur :

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

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

  • (Facultatif) L'interconnexion entre les applications locales et cloud est configurée

  • Facultatif :

    • Utilisez Cloud-native App Scaffolding pour créer un projet Spring Boot. Pour plus d'informations, consultez Détails.

    • Lors du développement local d'applications, utilisez le plug-in Alibaba Cloud Toolkit pour activer les appels mutuels entre les applications locales et les applications déployées dans EDAS (interconnexion end-to-cloud). Cela évite la configuration d'un VPN et améliore l'efficacité du développement. Pour plus d'informations, consultez Présentation de l'interconnexion end-to-cloud.

Créer un fournisseur de services

Étape 1 : Configurer le projet Maven

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

Dans src/main/java, créez le package com.alibaba.edas.boot et ajoutez l'interface IHelloService :

package com.alibaba.edas.boot;

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

Étape 3 : Implémenter le service

Dans le même package, créez IHelloServiceImpl pour implémenter l'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)";
    }
}
Remarque

L'annotation @Service utilisée ici est com.alibaba.dubbo.config.annotation.Service d'Apache Dubbo, et non l'annotation @Service du framework Spring.

Étape 4 : Configurer l'application

Créez le fichier application.properties (ou application.yaml) dans 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

Le tableau suivant décrit chaque propriété.

Propriété Description
dubbo.scan.basePackages Packages à analyser pour rechercher com.alibaba.dubbo.config.annotation.Service et com.alibaba.dubbo.config.annotation.Reference. Séparez plusieurs packages par des virgules (,). Obligatoire ; aucune valeur par défaut.
dubbo.application.name Nom de l'application enregistré auprès de Nacos. Obligatoire ; aucune valeur par défaut.
dubbo.registry.address Doit commencer par nacos://, suivi de l'adresse IP et du port du serveur Nacos. Pour le développement local, utilisez 127.0.0.1:8848. Lors du déploiement sur EDAS avec un registre géré par EDAS, celui-ci remplace automatiquement cette adresse. Pour un registre Nacos auto-géré, remplacez cette valeur par l'adresse de votre registre. Obligatoire ; aucune valeur par défaut.

Étape 5 : Créer la classe principale de l'application

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

}

Étape 6 : Vérifier le fournisseur

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

Créer un consommateur de services

Étape 1 : Configurer le projet Maven

Créez un projet Maven nommé spring-boot-dubbo-consumer 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-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>
Remarque

Spring Boot 1.x a atteint sa fin de vie en août 2019. Si vous devez utiliser Spring Boot 1.x, utilisez la version 1.5.x avec com.alibaba.boot:dubbo-spring-boot-starter version 0.1.0. Nous vous recommandons de mettre à niveau vers une version plus récente.

Étape 2 : Définir 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 utilisée dans le fournisseur :

package com.alibaba.edas.boot;

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

Étape 3 : Implémenter l'appel de service

Créez un contrôleur REST qui appelle le service Dubbo distant :

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

L'annotation @Reference est com.alibaba.dubbo.config.annotation.Reference d'Apache Dubbo.

Étape 4 : Configurer l'application

Ajoutez les propriétés suivantes au fichier application.properties ou application.yaml :

dubbo.application.name=dubbo-consumer-demo
dubbo.registry.address=nacos://127.0.0.1:8848
Propriété Description
dubbo.application.name Nom de l'application enregistré auprès de Nacos. Obligatoire ; aucune valeur par défaut.
dubbo.registry.address Doit commencer par nacos://, suivi de l'adresse IP et du port du serveur Nacos. Remplacez 127.0.0.1 par l'adresse de votre serveur Nacos s'il s'exécute sur une machine différente. Obligatoire ; aucune valeur par défaut.

Étape 5 : Créer la classe principale de l'application

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

}

Étape 6 : Vérifier le consommateur

Ouvrez la console Nacos à l'adresse http://127.0.0.1:8848 et cliquez sur Services dans le volet de navigation de gauche. Confirmez que com.alibaba.edas.boot.IHelloService apparaît dans la liste des services avec le groupe de services et l'adresse IP de l'appelant corrects.

Tester la configuration locale

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

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

Réponse attendue :

Hello, EDAS (from Dubbo with Spring Boot)

Déployer sur EDAS

Remarque

Application Configuration Management (ACM), intégré dans EDAS, fournit une version commerciale de Nacos. Lors du déploiement sur EDAS, le système remplace automatiquement l'adresse du serveur Nacos local (127.0.0.1:8848) par l'adresse du registre géré.

EDAS prend en charge le déploiement sur les types de clusters suivants. Choisissez un type de cluster et une méthode de déploiement en fonction de vos besoins.

Type de cluster Documentation
Elastic Compute Service (ECS) Déployer sur un cluster ECS
Container Service for Kubernetes (ACK) Déployer sur un cluster Kubernetes

Empaqueter l'application pour un déploiement via la console

Pour effectuer un déploiement via la console EDAS, ajoutez le plugin Maven Spring Boot au fichier pom.xml et générez le package JAR avant de le télécharger.

**Fournisseur pom.xml :**

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

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

Générez le package JAR :

mvn clean package

Note sur la migration

Évitez d'utiliser edas-dubbo-extension pour déployer des applications Dubbo sur EDAS. Cette extension ne prend pas en charge les fonctionnalités EDAS telles que la gouvernance des services Dubbo. Migrez plutôt vers Nacos.