All Products
Search
Document Center

Enterprise Distributed Application Service:Mengembangkan aplikasi layanan mikro Dubbo dengan Spring Boot

Last Updated:Mar 11, 2026

Tutorial ini menjelaskan cara membuat penyedia (provider) dan konsumen (consumer) layanan Dubbo menggunakan anotasi Spring Boot serta Nacos sebagai service registry, lalu menerapkannya ke Enterprise Distributed Application Service (EDAS). Anda dapat memilih registry dan mengelola konfigurasi sesuai kebutuhan bisnis Anda.

Jika Anda sudah memiliki aplikasi Dubbo berbasis Spring Boot, lewati topik ini dan terapkan aplikasi tersebut langsung ke EDAS.

Memulai cepat dengan proyek demo

Klon repositori demo yang telah disiapkan untuk melewati pengaturan manual:

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

Atau, unduh arsip ZIP. Demo untuk tutorial ini berada di alibabacloud-microservice-demo/microservice-doc-demo/dubbo-samples-spring-boot.

Untuk membuat kerangka proyek Spring Boot baru dengan dependensi yang telah dikonfigurasi sebelumnya, gunakan Cloud Native App Initializer.

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Maven terinstal dengan variabel lingkungan yang dikonfigurasi

  • Nacos Server versi terbaru telah diunduh dan dijalankan dalam mode standalone:

    1. Ekstrak paket Nacos Server yang telah diunduh.

    2. Buka direktori nacos/bin.

    3. Jalankan server:

      • Linux, UNIX, atau macOS: Jalankan sh startup.sh -m standalone.

      • Windows: Di startup.cmd, atur set MODE="standalone", lalu jalankan file tersebut.

  • (Opsional) Interkoneksi antara aplikasi on-premises dan cloud telah dikonfigurasi

Buat penyedia layanan

Langkah 1: Siapkan proyek Maven

Buat proyek Maven bernama spring-boot-dubbo-provider dan tambahkan dependensi berikut ke pom.xml. Contoh ini menggunakan 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>

Langkah 2: Definisikan antarmuka layanan

Di src/main/java, buat package com.alibaba.edas.boot dan tambahkan antarmuka IHelloService:

package com.alibaba.edas.boot;

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

Langkah 3: Implementasikan layanan

Di package yang sama, buat IHelloServiceImpl untuk mengimplementasikan antarmuka tersebut:

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

Anotasi @Service di sini adalah com.alibaba.dubbo.config.annotation.Service dari Apache Dubbo, bukan anotasi @Service dari Spring Framework.

Langkah 4: Konfigurasi aplikasi

Buat application.properties (atau application.yaml) di 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

Tabel berikut menjelaskan setiap properti.

PropertiDeskripsi
dubbo.scan.basePackagesPackage yang dipindai untuk mencari com.alibaba.dubbo.config.annotation.Service dan com.alibaba.dubbo.config.annotation.Reference. Pisahkan beberapa package dengan koma (,). Wajib diisi; tidak ada nilai default.
dubbo.application.nameNama aplikasi yang didaftarkan ke Nacos. Wajib diisi; tidak ada nilai default.
dubbo.registry.addressHarus diawali dengan nacos://, diikuti alamat IP dan port Nacos Server. Untuk pengembangan lokal, gunakan 127.0.0.1:8848. Saat Anda menerapkan ke EDAS dengan registry yang dikelola EDAS, EDAS akan mengganti alamat ini secara otomatis. Untuk registry Nacos yang dikelola sendiri, ganti nilai ini dengan alamat registry Anda. Wajib diisi; tidak ada nilai default.

Langkah 5: Buat kelas entri aplikasi

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

}

Langkah 6: Verifikasi penyedia layanan

Buka konsol Nacos di http://127.0.0.1:8848 dan klik Services pada panel navigasi kiri. Pastikan com.alibaba.edas.boot.IHelloService muncul dalam daftar layanan dengan grup layanan dan alamat IP penyedia yang benar.

Buat konsumen layanan

Langkah 1: Siapkan proyek Maven

Buat proyek Maven bernama spring-boot-dubbo-consumer dan tambahkan dependensi berikut ke pom.xml. Contoh ini menggunakan 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>
Catatan

Spring Boot 1.x telah mencapai akhir masa dukungan pada Agustus 2019. Jika Anda harus menggunakan Spring Boot 1.x, gunakan versi 1.5.x dengan com.alibaba.boot:dubbo-spring-boot-starter versi 0.1.0. Kami menyarankan untuk melakukan upgrade ke versi yang lebih baru.

Langkah 2: Definisikan antarmuka layanan

Di src/main/java, buat package com.alibaba.edas.boot dan tambahkan antarmuka IHelloService yang sama seperti pada penyedia layanan:

package com.alibaba.edas.boot;

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

Langkah 3: Implementasikan pemanggilan layanan

Buat REST controller yang memanggil layanan Dubbo jarak jauh:

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

Anotasi @Reference adalah com.alibaba.dubbo.config.annotation.Reference dari Apache Dubbo.

Langkah 4: Konfigurasi aplikasi

Tambahkan properti berikut ke application.properties atau application.yaml:

dubbo.application.name=dubbo-consumer-demo
dubbo.registry.address=nacos://127.0.0.1:8848
PropertiDeskripsi
dubbo.application.nameNama aplikasi yang didaftarkan ke Nacos. Wajib diisi; tidak ada nilai default.
dubbo.registry.addressHarus diawali dengan nacos://, diikuti alamat IP dan port Nacos Server. Ganti 127.0.0.1 dengan alamat Nacos Server Anda jika berjalan di mesin berbeda. Wajib diisi; tidak ada nilai default.

Langkah 5: Buat kelas entri aplikasi

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

}

Langkah 6: Verifikasi konsumen layanan

Buka konsol Nacos di http://127.0.0.1:8848 dan klik Services pada panel navigasi kiri. Pastikan com.alibaba.edas.boot.IHelloService muncul dalam daftar layanan dengan grup layanan dan alamat IP pemanggil yang benar.

Uji pengaturan lokal

Setelah penyedia dan konsumen layanan berjalan, kirim permintaan uji:

Halo, EDAS (dari Dubbo dengan Spring Boot)

Tanggapan yang diharapkan:

Hello, EDAS (from Dubbo with Spring Boot)

Terapkan ke EDAS

Catatan

Application Configuration Management (ACM), yang terintegrasi dalam EDAS, menyediakan versi komersial Nacos. Saat Anda menerapkan ke EDAS, alamat Nacos Server lokal (127.0.0.1:8848) akan diganti secara otomatis dengan alamat registry yang dikelola.

EDAS mendukung penerapan ke jenis kluster berikut. Pilih jenis kluster dan metode penerapan sesuai kebutuhan Anda.

Jenis klusterDokumentasi
Elastic Compute Service (ECS)Terapkan ke kluster ECS
Container Service for Kubernetes (ACK)Terapkan ke kluster Kubernetes

Paket aplikasi untuk penerapan melalui konsol

Untuk menerapkan melalui konsol EDAS, tambahkan plugin Spring Boot Maven ke pom.xml dan bangun paket JAR sebelum mengunggah.

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

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

Bangun paket JAR:

mvn clean package

Catatan migrasi

Hindari penggunaan edas-dubbo-extension untuk menerapkan aplikasi Dubbo ke EDAS. Ekstensi ini tidak mendukung fitur EDAS seperti tata kelola layanan Dubbo. Migrasikan ke Nacos sebagai gantinya.