Tüm Ürünler
Search
Belge Merkezi

Serverless App Engine:Use Spring Boot to develop Dubbo applications

Son Güncelleme:Oct 06, 2026

Spring Boot ek açıklamalarını kullanarak sıfırdan bir Dubbo hizmet sağlayıcısı ve tüketici oluşturun, bunları Nacos'a kaydedin ve SAE üzerinde dağıtın. Bu yaklaşım, ayrıntılı XML yapılandırmalarına duyulan ihtiyacı ortadan kaldırır ve Maven veya Dubbo çerçevesine yeni başlayanlar için iyi bir başlangıç noktasıdır.

Ön koşullar

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

  • Maven yüklü ve ortam değişkenleri yapılandırılmış olmalı

  • En son Nacos Server indirilmiş ve tek düğüm (standalone) modunda çalışıyor olmalı:

    1. Nacos Server paketini açın.

    2. nacos/bin dizinine gidin.

    3. Nacos Server'ı başlatın:

      • Linux, UNIX veya macOS: sh startup.sh -m standalone komutunu çalıştırın

      • Windows: startup.cmd dosyasında set MODE="standalone" ayarını yapın, ardından dosyayı çalıştırın

Demo projesi

Projeyi sıfırdan oluşturmak için bu konudaki adımları izleyin veya demo projesini doğrudan indirin. Depoyu klonlamak için aşağıdaki komutu da kullanabilirsiniz:

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

Bu konuya ait demo, alibabacloud-microservice-demo/microservice-doc-demo/dubbo-samples-spring-boot dizininde bulunmaktadır.

Hizmet sağlayıcı oluşturma

1. Adım: Projeyi kurma

spring-boot-dubbo-provider adlı bir Maven projesi oluşturun ve aşağıdaki bağımlılıkları pom.xml dosyasına ekleyin. Bu örnekte Spring Boot 2.0.6.RELEASE sürümü kullanılmaktadır.

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

2. Adım: Hizmet arayüzünü tanımlama

Tüm Dubbo hizmetleri arayüzler üzerinden sunulur.

  1. src/main/java dizininde com.alibaba.edas.boot adlı bir paket oluşturun.

  2. Bu paket içinde IHelloService adlı bir arayüz oluşturun:

package com.alibaba.edas.boot;

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

3. Adım: Hizmeti uygulama

com.alibaba.edas.boot paketinde, IHelloService arayüzünü uygulamak için IHelloServiceImpl adlı bir sınıf oluşturun:

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)";
    }
}
Buradaki @Service ek açıklaması, Dubbo tarafından sağlanan com.alibaba.dubbo.config.annotation.Service olup Spring'in @Service ek açıklaması değildir.

4. Adım: Dubbo hizmetini yapılandırma

src/main/resources dizininde application.properties (veya application.yaml) dosyasını oluşturun ve aşağıdaki satırları ekleyin:

# 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
Üç yapılandırma öğesinin tümü gereklidir; hiçbirinin varsayılan değeri yoktur.
dubbo.scan.basePackages : @Service ve @Reference ek açıklamalarını içeren paket(ler). Birden fazla paketi virgülle ayırın.
dubbo.registry.address : nacos:// ile başlamalı, ardından Nacos Server IP adresi ve bağlantı noktası gelmelidir. SAE tarafından yönetilen kayıt defterini kullanıyorsanız, SAE bu adresi çalışma zamanında otomatik olarak değiştirir. Kendi yönettiğiniz bir Nacos örneği kullanıyorsanız, 127.0.0.1:8848 değerini ilgili IP adresi ve bağlantı noktasıyla değiştirin.

5. Adım: Sağlayıcıyı başlatma

Spring Boot ana sınıfı DubboProvider oluşturun ve çalıştırın:

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

Sağlayıcıyı doğrulama

http://127.0.0.1:8848 adresinden Nacos konsolunda oturum açın. Sol gezinme bölmesinde Services seçeneğine tıklayın. Hizmet listesinde com.alibaba.edas.boot.IHelloService hizmetinin, hizmet grubunun ve sağlayıcı IP adresinin göründüğünü onaylayın.

Hizmet tüketici oluşturma

1. Adım: Projeyi kurma

spring-boot-dubbo-consumer adlı bir Maven projesi oluşturun ve aşağıdaki bağımlılıkları pom.xml dosyasına ekleyin. Bu örnekte de Spring Boot 2.0.6.RELEASE sürümü kullanılmaktadır.

<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 kullanmanız gerekiyorsa, Spring Boot 1.5.x ile birlikte com.alibaba.boot:dubbo-spring-boot-starter:0.1.0 kullanın. Spring Boot 1.x yaşam döngüsünün Ağustos 2019'da sona erdiğini unutmayın; daha yeni bir sürüm kullanmanız şiddetle tavsiye edilir.

2. Adım: Hizmet arayüzüne referans verme

src/main/java dizininde com.alibaba.edas.boot paketini oluşturun ve sağlayıcıdakiyle aynı IHelloService arayüzünü ekleyin:

package com.alibaba.edas.boot;

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

3. Adım: Uzak hizmeti çağırma

Uzak IHelloService hizmetini inject etmek için @Reference ek açıklamasını kullanan ve bunu HTTP üzerinden sunan bir denetleyici oluşturun:

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);
    }
}
Buradaki @Reference ek açıklaması, Dubbo tarafından sağlanan com.alibaba.dubbo.config.annotation.Reference şeklindedir.

4. Adım: Tüketiciyi yapılandırma

src/main/resources dizinindeki application.properties (veya application.yaml) dosyasına aşağıdakileri ekleyin:

dubbo.application.name=dubbo-consumer-demo
dubbo.registry.address=nacos://127.0.0.1:8848
Her iki yapılandırma öğesi de gereklidir. Nacos Server farklı bir ana bilgisayarda çalışıyorsa, 127.0.0.1:8848 değerini gerçek IP adresi ve bağlantı noktasıyla değiştirin.

5. Adım: Tüketiciyi başlatma

Spring Boot ana sınıfı DubboConsumer oluşturun ve çalıştırın:

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

Tüketiciyi doğrulama

http://127.0.0.1:8848 adresinden Nacos konsolunda oturum açın. Sol gezinme bölmesinde Services seçeneğine tıklayın. Hizmet listesinde com.alibaba.edas.boot.IHelloService hizmetinin, hizmet grubunun ve arayan IP adresinin göründüğünü onaylayın.

Hizmet çağrısını doğrulama

Hem sağlayıcı hem de tüketici çalışırken bir test isteği gönderin:

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

Beklenen çıktı:

Hello, SAE (from Dubbo with Spring Boot)

SAE üzerinde dağıtma

SAE, şirket içi Nacos kayıt defterini çalışma zamanında otomatik olarak SAE hizmet kayıt defteriyle değiştirir; bu nedenle kod değişikliği gerekmez.

Konsol üzerinden dağıtmadan önce her uygulamayı çalıştırılabilir bir JAR veya WAR paketine derleyin:

  1. pom.xml dosyasına Maven paketleme eklentisini ekleyin. Sağlayıcı:

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

    Tüketici:

    <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. JAR dosyasını derlemek için mvn clean package komutunu çalıştırın.

  3. Paketi SAE üzerinde dağıtın. Dağıtım seçenekleri için bkz. Uygulama dağıtımı.

Sonraki adımlar