すべてのプロダクト
Search
ドキュメントセンター

Enterprise Distributed Application Service:Spring Boot を使用した Dubbo マイクロサービスアプリケーションの開発

最終更新日:Mar 11, 2026

このチュートリアルでは、Spring Boot アノテーションとサービスレジストリとして Nacos を使用して Dubbo サービスプロバイダーとサービスコンシューマーを構築し、Enterprise Distributed Application Service (EDAS) にデプロイする方法を説明します。ビジネス要件に基づいてレジストリを選択し、構成を管理できます。

すでに Spring Boot ベースの Dubbo アプリケーションをお持ちの場合は、このトピックをスキップして、アプリケーションを直接 EDAS にデプロイしてください。

デモプロジェクトによるクイックスタート

事前にビルドされたデモをクローンして、手動設定をスキップします:

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

または、ZIP アーカイブをダウンロードすることもできます。このチュートリアルのデモは alibabacloud-microservice-demo/microservice-doc-demo/dubbo-samples-spring-boot にあります。

必要な依存関係が事前設定された新しい Spring Boot プロジェクトをスキャフォールディングするには、Cloud Native App Initializer を使用します。

前提条件

開始する前に、以下が準備されていることを確認してください:

  • 環境変数が設定された Maven がインストールされていること

  • 最新の Nacos サーバー がダウンロードされ、スタンドアロンモードで起動していること:

    1. ダウンロードした Nacos サーバーパッケージを展開します。

    2. nacos/bin ディレクトリに移動します。

    3. サーバーを起動します:

      • Linux、UNIX、または macOS:sh startup.sh -m standalone を実行します。

      • Windows:startup.cmdset MODE="standalone" を設定し、ファイルを実行します。

  • (オプション) オンプレミスとクラウドアプリケーション間の相互接続が設定されていること

サービスプロバイダーの作成

ステップ 1:Maven プロジェクトの設定

Maven プロジェクト spring-boot-dubbo-provider を作成し、pom.xml に次の依存関係を追加します。この例では 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>

ステップ 2:サービスインターフェイスの定義

src/main/java に、パッケージ com.alibaba.edas.boot を作成し、IHelloService インターフェイスを追加します:

package com.alibaba.edas.boot;

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

ステップ 3:サービスの実装

同じパッケージに、インターフェイスを実装する IHelloServiceImpl を作成します:

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)";
    }
}
説明

ここでの @Service アノテーションは、Spring Framework の @Service アノテーションではなく、Apache Dubbo の com.alibaba.dubbo.config.annotation.Service です。

ステップ 4:アプリケーションの設定

src/main/resourcesapplication.properties (または application.yaml) を作成します:

# 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

次の表に各プロパティの説明を示します。

プロパティ説明
dubbo.scan.basePackagescom.alibaba.dubbo.config.annotation.Servicecom.alibaba.dubbo.config.annotation.Reference をスキャンするパッケージ。複数のパッケージはカンマ (,) で区切ります。必須。デフォルト値はありません。
dubbo.application.nameNacos に登録されるアプリケーション名。必須。デフォルト値はありません。
dubbo.registry.addressnacos:// で始まり、Nacos サーバーの IP アドレスとポートが続く必要があります。ローカル開発では 127.0.0.1:8848 を使用します。EDAS マネージドレジストリを使用して EDAS にデプロイする場合、EDAS はこのアドレスを自動的に置き換えます。自己管理の Nacos レジストリの場合は、この値をレジストリのアドレスに置き換えてください。必須。デフォルト値はありません。

ステップ 5:アプリケーションエントリクラスの作成

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

}

ステップ 6:プロバイダーの検証

Nacos コンソールを http://127.0.0.1:8848 で開き、左側のナビゲーションウィンドウで [サービス] をクリックします。サービス一覧に com.alibaba.edas.boot.IHelloService が、正しいサービスグループおよびプロバイダーの IP アドレスとともに表示されていることを確認します。

サービスコンシューマーの作成

ステップ 1:Maven プロジェクトの設定

Maven プロジェクト spring-boot-dubbo-consumer を作成し、pom.xml に次の依存関係を追加します。この例では 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>
説明

Spring Boot 1.x は 2019 年 8 月に保守終了となりました。Spring Boot 1.x を使用する必要がある場合は、バージョン 1.5.x と com.alibaba.boot:dubbo-spring-boot-starter バージョン 0.1.0 を使用してください。新しいバージョンへのアップグレードを推奨します。

ステップ 2:サービスインターフェイスの定義

src/main/java に、パッケージ com.alibaba.edas.boot を作成し、プロバイダーで使用したものと同じ IHelloService インターフェイスを追加します:

package com.alibaba.edas.boot;

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

ステップ 3:サービス呼び出しの実装

リモート Dubbo サービスを呼び出す REST コントローラーを作成します:

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

@Reference アノテーションは、Apache Dubbo の com.alibaba.dubbo.config.annotation.Reference です。

ステップ 4:アプリケーションの設定

次のプロパティを application.properties または application.yaml に追加します:

dubbo.application.name=dubbo-consumer-demo
dubbo.registry.address=nacos://127.0.0.1:8848
プロパティ説明
dubbo.application.nameNacos に登録されるアプリケーション名。必須。デフォルト値はありません。
dubbo.registry.addressnacos:// で始まり、Nacos サーバーの IP アドレスとポートが続く必要があります。Nacos サーバーが別のマシンで実行されている場合は、127.0.0.1 を Nacos サーバーのアドレスに置き換えてください。必須。デフォルト値はありません。

ステップ 5:アプリケーションエントリクラスの作成

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

}

ステップ 6:コンシューマーの検証

Nacos コンソールを http://127.0.0.1:8848 で開き、左側のナビゲーションウィンドウで [サービス] をクリックします。サービスのリストに com.alibaba.edas.boot.IHelloService が、正しいサービスグループおよび呼び出し元の IP アドレスとともに表示されることを確認します。

ローカルセットアップのテスト

プロバイダーとコンシューマーの両方が実行されたら、テストリクエストを送信します:

Hello, EDAS (from Dubbo with Spring Boot)

期待される応答:

Hello, EDAS (from Dubbo with Spring Boot)

EDAS へのデプロイ

説明

EDAS に統合されているアプリケーション構成管理 (ACM) は、Nacos の商用版を提供します。EDAS にデプロイすると、オンプレミスの Nacos サーバーアドレス (127.0.0.1:8848) がマネージドレジストリのアドレスに自動的に置き換えられます。

EDAS は、次のクラスタータイプへのデプロイをサポートしています。要件に基づいてクラスタータイプとデプロイ方法を選択してください。

クラスタータイプドキュメント
Elastic Compute Service (ECS)ECS クラスターへのデプロイ
Container Service for Kubernetes (ACK)Kubernetes クラスターへのデプロイ

コンソールデプロイ用のアプリケーションのパッケージ化

EDAS コンソール経由でデプロイするには、Spring Boot Maven プラグインを pom.xml に追加し、アップロードする前に JAR パッケージをビルドします。

プロバイダーの 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>

コンシューマーの 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>

JAR パッケージをビルドします:

mvn clean package

移行に関する注意

edas-dubbo-extension を使用して Dubbo アプリケーションを EDAS にデプロイすることは避けてください。この拡張機能は、Dubbo サービスガバナンスなどの EDAS の機能をサポートしていません。代わりに Nacos に移行してください。