Azure Blob Depolama'a dosya yüklemek için Spring Boot kullanma

Bu öğretici, Spring Boot uygulaması üzerinden bir Azure Blob Depolama hesabındaki kapsayıcı bloblarını nasıl karşıya yükleyip okuyacağınızı gösterir.

Azure Blob Depolama bulut için Microsoft nesne depolama çözümüdür. Blob depolama, metin veya ikili veri gibi çok büyük miktarda yapılandırılmamış veriyi depolamak için iyileştirilmiştir.

Önkoşullar

Not

Hesabınıza kaynaklara erişim vermek için, yeni oluşturduğunuz Azure Depolama hesabınızda kullanmakta olduğunuz Microsoft Entra hesabına Storage Blob Data Contributor rolünü atayın. Daha fazla bilgi için bkz. Azure portalını kullanarak Azure rolleri atama.

Önemli

Bu öğreticideki adımları tamamlamak için Spring Boot sürüm 2.5 veya üzeri gereklidir.

Kapsayıcı oluşturma

İlk olarak, testcontainer ile blobları karşıya yükleme, indirme ve listeleme yönergelerini izleyerek adlı bir kapsayıcı oluşturun.

Azure Depolama hesap kapsayıcısından blobları karşıya yükleme ve okuma

Artık bir Azure Depolama hesabınız ve kapsayıcınız olduğuna göre Spring Cloud Azure ile bloblardan dosyaları karşıya yükleyebilir ve okuyabilirsiniz.

Spring Cloud Azure Depolama Blob Starter modülünü yüklemek için pom.xml dosyanıza aşağıdaki bağımlılıkları ekleyin:

  • Spring Cloud Azure Ürün Reçetesi( BOM):

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.azure.spring</groupId>
          <artifactId>spring-cloud-azure-dependencies</artifactId>
          <version>7.2.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    Not

    Spring Boot 4.0.x kullanıyorsanız, spring-cloud-azure-dependencies sürümünü 7.2.0 olarak ayarladığınızdan emin olun.

    Spring Boot 3.5.x kullanıyorsanız, spring-cloud-azure-dependencies sürümünü 6.2.0 olarak ayarladığınızdan emin olun.

    Spring Boot 3.1.x-3.5.x kullanıyorsanız, spring-cloud-azure-dependencies sürümünü 5.25.0 olarak ayarladığınızdan emin olun.

    Eğer Spring Boot 2.x kullanıyorsanız, spring-cloud-azure-dependencies sürümünü 4.20.0 olarak ayarladığınızdan emin olun.

    Bu Parça Listesi (BOM), <dependencyManagement> bölümünde pom.xml dosyanızda yapılandırılmalıdır. Bu, tüm Spring Cloud Azure bağımlılıklarının aynı sürümü kullanmasını sağlar.

    Bu ürün reçetesi için kullanılan sürüm hakkında daha fazla bilgi için bkz: Hangi Spring Cloud Azure Sürümünü Kullanmalıyım.

  • Spring Cloud Azure Depolama Blob Starter bileşeni:

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-starter-storage-blob</artifactId>
    </dependency>
    

Uygulamayı kodlama

Spring Cloud Azure Depolama Blob başlatıcısını kullanarak bloblardan dosya yüklemek ve okumak için aşağıdaki adımları kullanarak uygulamayı yapılandırın.

  1. Aşağıdaki örnekte gösterildiği gibi application.properties yapılandırma dosyasında bir Depolama hesabı adı ve uç noktası yapılandırın.

    spring.cloud.azure.storage.blob.account-name=${AZURE_STORAGE_ACCOUNT_NAME}
    spring.cloud.azure.storage.blob.endpoint=${AZURE_STORAGE_ACCOUNT_ENDPOINT}
    
  2. Aşağıdaki örnekte gösterildiği gibi yeni bir BlobController Java sınıfı oluşturun. Bu sınıf, Azure Depolama hesabındaki kapsayıcı blobuna dosyalar yüklemek ve okumak için kullanılır.

    package com.example.demo;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.core.io.Resource;
    import org.springframework.core.io.WritableResource;
    import org.springframework.util.StreamUtils;
    import org.springframework.web.bind.annotation.*;
    
    import java.io.IOException;
    import java.io.OutputStream;
    import java.nio.charset.Charset;
    
    @RestController
    @RequestMapping("blob")
    public class BlobController {
    
        @Value("azure-blob://testcontainer/test.txt")
        private Resource blobFile;
    
        @GetMapping("/readBlobFile")
        public String readBlobFile() throws IOException {
            return StreamUtils.copyToString(
                    this.blobFile.getInputStream(),
                    Charset.defaultCharset());
        }
    
        @PostMapping("/writeBlobFile")
        public String writeBlobFile(@RequestBody String data) throws IOException {
            try (OutputStream os = ((WritableResource) this.blobFile).getOutputStream()) {
                os.write(data.getBytes());
            }
            return "file was updated";
        }
    }
    

    İpucu

    Bu öğreticide yapılandırmalarda veya kodda kimlik doğrulama işlemi yoktur. Ancak, Azure hizmetlerine bağlanmak için kimlik doğrulaması gerekir. Kimlik doğrulamasını tamamlamak için Azure Identity kullanmanız gerekir. Spring Cloud Azure, Azure Kimlik kitaplığının herhangi bir kod değişikliği yapmadan kimlik bilgilerini almanıza yardımcı olmak için sağladığı DefaultAzureCredential kullanır.

    DefaultAzureCredential birden çok kimlik doğrulama yöntemini destekler ve çalışma zamanında hangi yöntemin kullanılacağını belirler. Bu yaklaşım, uygulamanızın ortama özgü kod uygulamadan farklı ortamlarda (yerel ve üretim ortamları gibi) farklı kimlik doğrulama yöntemleri kullanmasını sağlar. Daha fazla bilgi için bkz. DefaultAzureCredential.

    Yerel geliştirme ortamlarında kimlik doğrulamasını tamamlamak için Azure CLI, Visual Studio Code, PowerShell veya diğer yöntemleri kullanabilirsiniz. Daha fazla bilgi için bkz. Java geliştirme ortamlarında Azure kimlik doğrulaması. Azure barındırma ortamlarında kimlik doğrulamasını tamamlamak için kullanıcı tarafından atanan yönetilen kimliği kullanmanızı öneririz. Daha fazla bilgi için bkz. Azure kaynakları için yönetilen kimlikler nelerdir?

  3. Uygulamanız çalıştırıldıktan sonra aşağıdaki adımları izleyerek uygulamanızı test etmek için kullanın curl .

    1. Aşağıdaki komutu kullanarak dosyanın içeriğini güncelleştirmek için post isteği gönderin:

      curl http://localhost:8080/blob/writeBlobFile -d "new message" -H "Content-Type: text/plain"
      

      ifadesini file was updatediçeren bir yanıt görmeniz gerekir.

    2. Aşağıdaki komutu kullanarak dosyanın içeriğini doğrulamak için bir GET isteği gönderin:

      curl -X GET http://localhost:8080/blob/readBlobFile
      

      Gönderdiğiniz "yeni ileti" metnini görmeniz gerekir.

Azure Spring Apps'e dağıtım yapma

Spring Boot uygulamasını yerel olarak çalıştırdığınıza göre artık uygulamayı üretim ortamına taşımanın zamanı geldi. Azure Spring Apps Spring Boot uygulamalarını kod değişikliği olmadan Azure dağıtmayı kolaylaştırır. Hizmet, geliştiricilerin kodlarına odaklanabilmesi için Spring uygulamalarının altyapısını yönetir. Azure Spring Apps kapsamlı izleme ve tanılama, yapılandırma yönetimi, hizmet bulma, CI/CD tümleştirmesi, mavi-yeşil dağıtımlar ve daha fazlasını kullanarak yaşam döngüsü yönetimi sağlar. Uygulamanızı Azure Spring Apps dağıtmak için bkz. İlk uygulamanızı Azure Spring Apps'a dağıtma.

Sonraki adımlar

Spring ve Azure hakkında daha fazla bilgi edinmek için spring on Azure belge merkezine geçin.

Spring geliştiricileri için AzureSpring Cloud Azure Depolama Örnekleri

Ayrıca bkz.

Microsoft Azure kullanılabilen ek Spring Boot Başlatıcıları hakkında daha fazla bilgi için bkz. Spring Cloud Azure nedir?

Spring Boot uygulamalarınızdan çağırabileceğiniz ek Azure depolama API'leri hakkında daha fazla bilgi için aşağıdaki makalelere bakın: