Tüm Ürünler
Search
Belge Merkezi

Enterprise Distributed Application Service:Integrate OSS with a Spring Cloud application on EDAS

Son Güncelleme:Oct 03, 2026

Object Storage Service (OSS) üzerinden dosya yükleyen, indiren ve okuyan bir Spring Cloud uygulaması oluşturun. Kodda veya yapılandırmada herhangi bir değişiklik yapmadan bu uygulamayı Enterprise Distributed Application Service (EDAS) üzerine dağıtın.

Neden OSS kullanmalısınız?

OSS Alibaba Cloud tarafından geliştirilmiştir; güvenli, maliyet etkin ve son derece güvenilir depolama hizmetleri sunar. Büyük miktarda veriyi cloud ortamında saklamanıza olanak tanır. OSS, platformdan bağımsız RESTful API işlemleri sağlar; bu sayede Spring Cloud ile geliştirdiğiniz uygulamalarda her türlü veriyi depolayabilir ve erişebilirsiniz.

Ön koşullar

Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:

Nasıl çalışır?

Spring Cloud AliCloud OSS, Spring Cloud uygulamalarını Alibaba Cloud OSS ile entegre eder. Başlangıç bağımlılığını ekleyip kimlik bilgilerinizi yapılandırdıktan sonra şunları yapabilirsiniz:

  • Bir OSS istemcisini doğrudan Spring bean'lerinize enjekte edin

  • @Value("oss://...") kullanarak OSS nesnelerine Spring Resource örnekleri olarak erişin

  • Aynı uygulamayı kodda veya yapılandırmada değişiklik yapmadan EDAS'a dağıtın

Maven projesini kurma

  1. oss-example adlı bir Maven projesi oluşturun.

  2. Aşağıdaki bağımlılıkları pom.xml dosyasına ekleyin:

    Spring Boot 1.x yaşam döngüsünü tamamlamıştır. Spring Boot 1.x kullanmanız gerekiyorsa Spring Cloud Edgware ve Spring Cloud Alibaba 1,5.1.RELEASE ile birlikte 1.5.x sürümünü kullanın.
       <parent>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-parent</artifactId>
           <version>2.1.4.RELEASE</version>
           <relativePath/>
       </parent>
    
       <dependencies>
           <dependency>
               <groupId>com.alibaba.cloud</groupId>
               <artifactId>spring-cloud-starter-alicloud-oss</artifactId>
               <version>2.1.1.RELEASE</version>
           </dependency>
           <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-web</artifactId>
           </dependency>
       </dependencies>
    
       <dependencyManagement>
           <dependencies>
               <dependency>
                   <groupId>org.springframework.cloud</groupId>
                   <artifactId>spring-cloud-dependencies</artifactId>
                   <version>Finchley.SR1</version>
                   <type>pom</type>
                   <scope>import</scope>
               </dependency>
           </dependencies>
       </dependencyManagement>
  3. src/main/java dizini altında spring.cloud.alicloud.oss adlı bir paket oluşturun.

Uygulama giriş noktasını oluşturma

spring.cloud.alicloud.oss paketi içinde OssApplication başlatma sınıfını oluşturun. Bu sınıf, başlatma sırasında hedef paketin var olup olmadığını kontrol eder ve gerekirse paketi oluşturur.

package spring.cloud.alicloud.oss;

import com.aliyun.oss.OSS;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

import java.net.URISyntaxException;

@SpringBootApplication
public class OssApplication {

    // Replace with your actual bucket name
    public static final String BUCKET_NAME = "test-bucket";

    public static void main(String[] args) throws URISyntaxException {
        SpringApplication.run(OssApplication.class, args);
    }

    @Bean
    public AppRunner appRunner() {
        return new AppRunner();
    }

    class AppRunner implements ApplicationRunner {
        @Autowired
        private OSS ossClient;

        @Override
        public void run(ApplicationArguments args) throws Exception {
            try {
                if (!ossClient.doesBucketExist(BUCKET_NAME)) {
                    ossClient.createBucket(BUCKET_NAME);
                }
            } catch (Exception e) {
                System.err.println("oss handle bucket error: " + e.getMessage());
                System.exit(-1);
            }
        }
    }
}

Örnek bir dosya ekleme

src/main/resources dizininde oss-test.json adlı bir dosya oluşturun:

{
  "name": "oss-test"
}

REST denetleyicisini oluşturma

spring.cloud.alicloud.oss paketi içinde OssController sınıfını oluşturun. Bu denetleyici, Spring Resource arayüzü üzerinden dosya yükleme, indirme ve okuma işlemleri için üç uç nokta sunar.

package spring.cloud.alicloud.oss;

import com.aliyun.oss.OSS;
import com.aliyun.oss.common.utils.IOUtils;
import com.aliyun.oss.model.OSSObject;
import org.apache.commons.codec.CharEncoding;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.util.StreamUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.nio.charset.Charset;

@RestController
public class OssController {

    @Autowired
    private OSS ossClient;

    // Access an OSS object as a Spring Resource
    @Value("oss://" + OssApplication.BUCKET_NAME + "/oss-test.json")
    private Resource file;

    /**
     * Uploads oss-test.json from the classpath to the OSS bucket.
     */
    @GetMapping("/upload")
    public String upload() {
        try {
            ossClient.putObject(OssApplication.BUCKET_NAME, "oss-test.json", this
                    .getClass().getClassLoader().getResourceAsStream("oss-test.json"));
        } catch (Exception e) {
            e.printStackTrace();
            return "upload fail: " + e.getMessage();
        }
        return "upload success";
    }

    /**
     * Reads the OSS object through the Spring Resource interface.
     */
    @GetMapping("/file-resource")
    public String fileResource() {
        try {
            return "get file resource success. content: " + StreamUtils.copyToString(
                    file.getInputStream(), Charset.forName(CharEncoding.UTF_8));
        } catch (Exception e) {
            e.printStackTrace();
            return "get resource fail: " + e.getMessage();
        }
    }

    /**
     * Downloads the OSS object directly through the OSS client.
     */
    @GetMapping("/download")
    public String download() {
        try {
            OSSObject ossObject = ossClient.getObject(OssApplication.BUCKET_NAME, "oss-test.json");
            return "download success, content: " + IOUtils
                    .readStreamAsString(ossObject.getObjectContent(), CharEncoding.UTF_8);
        } catch (Exception e) {
            e.printStackTrace();
            return "download fail: " + e.getMessage();
        }
    }
}

Uç nokta özeti:

Uç Nokta Yöntem Açıklama
/upload GET Classpath'ten oss-test.json dosyasını OSS paketinize yükler
/file-resource GET Dosyayı Spring'in Resource soyutlaması (@Value("oss://...")) üzerinden OSS'den okur
/download GET Dosyayı doğrudan OSS istemcisi üzerinden alır

Kimlik bilgilerini ve uç noktayı yapılandırma

  1. AccessKey ID'nizi ve AccessKey secret'ınızı Security Management sayfasından alın.

  2. Paketinizin bulunduğu bölge için uç noktayı edinin. Bkz. Bölgeler ve uç noktalar.

  3. src/main/resources dizininde application.properties dosyasını oluşturun. Aşağıdaki yer tutucuları gerçek değerlerinizle değiştirin:

    Yer Tutucu Açıklama Örnek
    <your-access-key> AccessKey ID LTAI5tXxx
    <your-secret-key> AccessKey secret xXxXxXx
    <your-endpoint> Bölgesel uç nokta ön eki oss-cn-hangzhou
       spring.application.name=oss-example
       server.port=18084
    
       # Replace with your actual credentials and endpoint
       spring.cloud.alicloud.access-key=<your-access-key>
       spring.cloud.alicloud.secret-key=<your-secret-key>
       spring.cloud.alicloud.oss.endpoint=<your-endpoint>.aliyuncs.com
       management.endpoints.web.exposure.include=*

Sonucu doğrulama

  1. Hizmeti başlatmak için OssApplication sınıfının main yöntemini çalıştırın.

  2. Tarayıcınızda http://127.0.0.1:18084/upload adresini açın. upload success mesajı görünürse dosya başarıyla yüklenmiştir.

  3. OSS konsolunda doğrulama yapın: Paketinize gidin, sol gezinme bölmesinde Files seçeneğine tıklayın ve dosya listesinde oss-test.json dosyasının göründüğünü onaylayın.

  4. Dosyayı indirmek için http://127.0.0.1:18084/download adresini açın. Beklenen çıktı şöyledir:

       {
         "name": "oss-test"
       }
  5. Dosyayı Spring Resource arayüzü üzerinden okumak için http://127.0.0.1:18084/file-resource adresini açın. Beklenen çıktı şöyledir:

       {
         "name": "oss-test"
       }

Herhangi bir adım başarısız olursa hata ayıklamak için konsol günlüklerini kontrol edin, sorunu düzeltin ve uygulamayı yeniden başlatın.

EDAS'a dağıtma

Spring Cloud AliCloud OSS, uygulamaları orijinal geliştirme ortamlarından EDAS'a geçirme ihtiyaçlarına yanıt vermek üzere geliştirilmiştir. Uygulamanızı kodda veya yapılandırmada değişiklik yapmadan dağıtın.

Dağıtım adımları için bkz.:

Yapılandırma referansı

Özellik Açıklama Örnek
spring.cloud.alicloud.access-key Kimlik doğrulama için AccessKey ID LTAI5tXxx
spring.cloud.alicloud.secret-key Kimlik doğrulama için AccessKey secret xXxXxXx
spring.cloud.alicloud.oss.endpoint OSS bölgesel uç noktası oss-cn-hangzhou.aliyuncs.com
server.port Uygulama bağlantı noktası 18084
spring.application.name Spring uygulama adı oss-example

Sırada ne var?