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

Serverless App Engine:Spring Boot を使用して Dubbo アプリケーションを開発する

最終更新日:Jul 29, 2025

従来の XML 設定方法に加えて、Spring Boot を使用して Dubbo アプリケーションを開発できます。この方法は、Java に精通していない開発者、Maven の経験が少ない開発者、または Dubbo フレームワークに慣れていない開発者に特に適しています。このトピックでは、Spring Boot を使用して Dubbo アプリケーションをゼロから開発し、SAE サービスレジストリを使用してサービスの登録と検出を行う方法について説明します。

前提条件

  • Maven をダウンロードし、環境変数を設定します。

  • 最新バージョンの Nacos Server をダウンロードします。

  • Nacos Server を起動します。

    1. ダウンロードした Nacos Server パッケージを解凍します。

    2. nacos/bin パスに移動し、次のいずれかの方法を使用して Nacos Server を起動します。 使用する方法は OS によって異なります。

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

      • Windows: startup.cmd ファイルで、set MODE="standalone" コマンドを使用して MODE パラメーターを設定します。 その後、ファイルを実行します。

Spring Boot を使用して Dubbo アプリケーションを開発する理由

Spring Boot は、マイクロサービスアプリケーションの設定とデプロイを簡素化します。Nacos は、サービスの登録、検出、および構成管理のための機能を提供します。Spring Boot と Nacos を統合することで、従来の XML ベースの方法よりも開発効率の高い Spring ベースの Dubbo サービスを迅速に構築できます。

Spring Boot に基づいて Dubbo アプリケーションを開発するには、次の 2 つの方法を使用できます。

  • XML 設定ファイルを使用してアプリケーションを開発する。

  • Spring Boot アノテーションを使用してアプリケーションを開発する。

XML 設定ファイルを使用したアプリケーションの開発の詳細については、「SAE で Dubbo アプリケーションをホストする」をご参照ください。このトピックでは、Spring Boot アノテーションを使用して Dubbo サービスを開発する方法について説明します。

デモプロジェクト

このトピックで説明されている手順を実行してプロジェクトをビルドできます。また、このトピックで使用されている デモプロジェクト をダウンロードするか、Git で git clone https://github.com/aliyun/alibabacloud-microservice-demo.git コマンドを実行してプロジェクトをクローンすることもできます。

クローンされたプロジェクトには、複数のデモプロジェクトが含まれています。このトピックで使用されるデモプロジェクトは、alibabacloud-microservice-demo/microservice-doc-demo/dubbo-samples-spring-boot パスに格納されています。

サービスプロバイダーを作成する

  1. spring-boot-dubbo-provider という名前の Maven プロジェクトを作成します。

  2. 必要な依存関係を 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</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>                   
  3. Dubbo サービスプロバイダーを開発します。

    すべての Dubbo サービスはインターフェースを使用して提供されます。

    1. src/main/java パスに、com.alibaba.edas.boot という名前のパッケージを作成します。

    2. com.alibaba.edas.boot パッケージに、SayHello という名前のメソッドを含む IHelloService という名前のインターフェースを作成します。

      package com.alibaba.edas.boot;
      public interface IHelloService {
      String sayHello(String str);
      }                                
    3. com.alibaba.edas.boot パッケージに、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 アノテーションは Dubbo によって提供されるアノテーションクラスです。アノテーションクラスのフルネームは、com.alibaba.dubbo.config.annotation.Service です。

  4. Dubbo サービスを設定します。

    1. src/main/resources パスに、application.properties ファイルまたは application.yaml ファイルを作成し、ファイルを開きます。

    2. 次の設定項目を application.properties ファイルまたは application.yaml ファイルに追加します。

      # Dubbo コンポーネントをスキャンする基本パッケージ (例: @Service、@Reference) //日本語コメント追加
      dubbo.scan.basePackages=com.alibaba.edas.boot
      dubbo.application.name=dubbo-provider-demo
      dubbo.registry.address=nacos://127.0.0.1:8848                                
      説明
      • 上記のコードの 3 つの設定項目にはデフォルト値がないため、値を指定する必要があります。

      • dubbo.scan.basePackages の値は、コードに com.alibaba.dubbo.config.annotation.Servicecom.alibaba.dubbo.config.annotation.Reference が含まれるパッケージです。複数のパッケージはカンマ (,) で区切ります。

      • dubbo.registry.address の値は nacos:// で始まり、その後に Nacos Server の IP アドレスとポート番号が続きます。サンプルコードの IP アドレスはオンプレミスアドレスです。Enterprise Distributed Application Service (EDAS) 管理レジストリを使用する場合、EDAS はサンプルの IP アドレスをレジストリの IP アドレスに自動的に変更します。セルフマネージド Nacos レジストリを使用する場合は、サンプルコードの dubbo.registry.address の値をレジストリの IP アドレスに変更します。

  5. Spring Boot の DubboProvider エントリクラスを開発して起動します。

        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);
            }
    
        }                        
  6. http://127.0.0.1:8848 から Nacos コンソールにログインします。左側のナビゲーションウィンドウで、[サービス] をクリックして、サービスプロバイダーのリストを表示します。

    リストには、com.alibaba.edas.boot.IHelloService が表示されます。 サービスのサービスグループとプロバイダーの IP アドレスを照会できます。

サービスコンシューマーを作成する

  1. spring-boot-dubbo-consumer という名前の Maven プロジェクトを作成します。

  2. 必要な依存関係を 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 を使用する場合は、Spring Boot 1.5.x と com.alibaba.boot:dubbo-spring-boot-starter 0.1.0 を使用してください。

    説明

    Spring Boot 1.x のライフサイクルは 2019 年 8 月に終了しました。新しいバージョンを使用してアプリケーションを開発することをお勧めします。

  3. Dubbo サービスコンシューマーを開発します。

    1. src/main/java パスに、com.alibaba.edas.boot という名前のパッケージを作成します。

    2. com.alibaba.edas.boot パッケージに、IHelloService インターフェイスを作成し、その中に SayHello メソッドを定義します。

      package com.alibaba.edas.boot;
      
      public interface IHelloService {
       String sayHello(String str);
      }                                
  4. Dubbo サービスコールのコードを開発します。

    次のサンプルコードは、コントローラーでリモート Dubbo サービスを呼び出す方法の例を示しています。

    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 アノテーションは com.alibaba.dubbo.config.annotation.Reference です。

  5. 次の設定項目を application.properties or application.yaml ファイルに追加します:

    dubbo.application.name=dubbo-consumer-demo
    dubbo.registry.address=nacos://127.0.0.1:8848                        
    説明
    • 上記のコードの 2 つの設定項目にはデフォルト値がないため、値を指定する必要があります。

    • dubbo.registry.address の値は nacos:// で始まり、その後に Nacos Server の IP アドレスとポート番号が続きます。サンプルコードの IP アドレスはオンプレミスアドレスです。Nacos Server が別のマシンにデプロイされている場合は、サンプルの IP アドレスをそのマシンの IP アドレスに変更します。

  6. Spring Boot の DubboConsumer エントリクラスを開発して起動します。

    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);
        }
    
    }                        
  7. http://127.0.0.1:8848 から Nacos コンソールにログインします。左側のナビゲーションウィンドウで、[サービス] をクリックします。[サービス] ページで、呼び出し元サービスのリストを表示します。

    リストには、com.alibaba.edas.boot.IHelloService が表示されます。 サービスのサービスグループと呼び出し元の IP アドレスを表示できます。

結果を確認する

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

`Hello, SAE (from Dubbo with Spring Boot)`            

アプリケーションを SAE にデプロイする

オンプレミス Nacos インスタンスをレジストリとして使用するアプリケーションを、アプリケーションを変更せずに SAE にデプロイできます。SAE は、実行時にオンプレミスレジストリを SAE レジストリに自動的に置き換えます。

コンソールまたは他のツールを使用してアプリケーションをデプロイできます。詳細については、「アプリケーションのデプロイ」をご参照ください。

コンソールを使用してアプリケーションをデプロイする前に、次の手順を実行してアプリケーションを実行可能な JAR パッケージまたは WAR パッケージにコンパイルします。

  1. パッケージングプラグインの次の設定を 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>                                
    • コンシューマー

      <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. mvn clean package コマンドを実行して、オンプレミスプログラムを JAR パッケージにビルドします。