Przekazywanie pliku do Azure Blob Storage przy użyciu platformy Spring Boot

W tym samouczku pokazano, jak przesyłać i odczytywać dane z blobs kontenera w usłudze Microsoft Azure Blob Storage przy użyciu aplikacji Spring Boot.

Azure Blob Storage jest rozwiązaniem magazynu obiektów Microsoft dla chmury. Przechowywanie obiektów blob jest zoptymalizowane pod kątem przechowywania ogromnej ilości niestrukturyzowanych danych, takich jak dane tekstowe i binarne.

Wymagania wstępne

Uwaga

Aby udzielić kontu dostępu do zasobów, na nowo utworzonym koncie Azure Storage przypisz rolę Storage Blob Data Contributor do aktualnie używanego konta Microsoft Entra. Aby uzyskać więcej informacji, zobacz Przypisania ról Azure przy użyciu portalu Azure.

Ważne

Do wykonania kroków opisanych w tym samouczku wymagana jest wersja Spring Boot 2.5 lub nowsza.

Tworzenie kontenera

Najpierw utwórz kontener o nazwie testcontainer, postępując zgodnie z instrukcjami w Quickstart: Przekazywanie, pobieranie i wyświetlanie listy obiektów blob za pomocą portalu Azure.

Przekazywanie i odczytywanie obiektów blob z kontenera konta Azure Storage

Teraz, gdy masz konto Azure Storage i kontener, możesz przekazywać i odczytywać pliki z obiektów blob za pomocą usługi Spring Cloud Azure.

Aby zainstalować moduł Spring Cloud Azure Storage Blob Starter, dodaj następujące zależności do pliku pom.xml:

  • Projekt Spring Cloud Azure Bill of Materials (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>
    

    Uwaga

    Jeśli używasz platformy Spring Boot 4.0.x, pamiętaj, aby ustawić spring-cloud-azure-dependencies wersję na 7.2.0.

    Jeśli używasz platformy Spring Boot 3.5.x, pamiętaj, aby ustawić spring-cloud-azure-dependencies wersję na 6.2.0.

    Jeśli używasz platformy Spring Boot 3.1.x-3.5.x, pamiętaj, aby ustawić spring-cloud-azure-dependencies wersję na 5.25.0.

    Jeśli używasz środowiska Spring Boot 2.x, ustaw wersję spring-cloud-azure-dependencies na 4.20.0.

    Tę listę materiałów (BOM) należy skonfigurować w sekcji <dependencyManagement> pliku pom.xml. Dzięki temu wszystkie zależności usługi Spring Cloud Azure korzystają z tej samej wersji.

    Aby uzyskać więcej informacji na temat wersji używanej w tym BOM, zobacz Którą wersję Spring Cloud Azure powinienem użyć?.

  • Artefakt startowy usługi Spring Cloud Azure Storage Blob:

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

Kodowanie aplikacji

Aby przekazywać i odczytywać pliki z obiektów blob przy użyciu szablonu startowego Spring Cloud Azure Storage Blob, skonfiguruj aplikację, wykonując następujące kroki.

  1. Skonfiguruj nazwę konta magazynu i punkt końcowy w pliku konfiguracyjnym application.properties, jak pokazano w poniższym przykładzie.

    spring.cloud.azure.storage.blob.account-name=${AZURE_STORAGE_ACCOUNT_NAME}
    spring.cloud.azure.storage.blob.endpoint=${AZURE_STORAGE_ACCOUNT_ENDPOINT}
    
  2. Utwórz nową klasę BlobController Java, jak pokazano w poniższym przykładzie. Ta klasa służy do przesyłania i odczytywania plików z obiektu blob kontenera na koncie Azure Storage.

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

    Napiwek

    W tym samouczku nie ma żadnych operacji uwierzytelniania w konfiguracjach ani w kodzie. Jednak nawiązywanie połączenia z usługami Azure wymaga uwierzytelniania. Aby ukończyć uwierzytelnianie, musisz użyć Azure Identity. Usługa Spring Cloud Azure używa DefaultAzureCredential, którą udostępnia biblioteka Azure Identity, aby ułatwić uzyskiwanie poświadczeń bez żadnych zmian w kodzie.

    DefaultAzureCredential obsługuje wiele metod uwierzytelniania i określa, która metoda ma być używana w czasie wykonywania. Takie podejście umożliwia aplikacji używanie różnych metod uwierzytelniania w różnych środowiskach (takich jak środowiska lokalne i produkcyjne) bez implementowania kodu specyficznego dla środowiska. Aby uzyskać więcej informacji, zobacz DefaultAzureCredential.

    Aby ukończyć uwierzytelnianie w lokalnych środowiskach deweloperskich, możesz użyć Azure CLI, Visual Studio Code, programu PowerShell lub innych metod. Aby uzyskać więcej informacji, zobacz uwierzytelnianie w Azure w środowiskach deweloperskich Java. Aby ukończyć uwierzytelnianie w środowiskach hostingu Azure, zalecamy użycie tożsamości zarządzanej przypisanej przez użytkownika. Aby uzyskać więcej informacji, zobacz Jak są tożsamości zarządzane dla zasobów Azure?

  3. Po uruchomieniu aplikacji użyj polecenia curl , aby przetestować aplikację, wykonując następujące kroki.

    1. Wyślij żądanie POST, aby zaktualizować zawartość pliku przy użyciu następującego polecenia:

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

      Powinna zostać wyświetlona odpowiedź z informacją file was updated.

    2. Wyślij żądanie GET, aby zweryfikować zawartość pliku przy użyciu następującego polecenia:

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

      Powinieneś zobaczyć tekst "nowa wiadomość", który umieściłeś.

Wdrażanie do Azure Spring Apps

Teraz, gdy aplikacja Spring Boot działa lokalnie, nadszedł czas, aby przenieść ją do środowiska produkcyjnego. Azure Spring Apps ułatwia wdrażanie aplikacji Spring Boot w Azure bez żadnych zmian w kodzie. Usługa zarządza infrastrukturą aplikacji Spring, aby deweloperzy mogli skupić się na swoim kodzie. Azure Spring Apps zapewnia zarządzanie cyklem życia przy użyciu kompleksowego monitorowania i diagnostyki, zarządzania konfiguracją, odnajdywania usług, integracji CI/CD, wdrożeń blue-green i nie tylko. Aby wdrożyć aplikację do Azure Spring Apps, zapoznaj się z Wdrożenie pierwszej aplikacji do Azure Spring Apps.

Następne kroki

Aby dowiedzieć się więcej na temat platformy Spring i Azure, przejdź do centrum dokumentacji Spring w Azure.

Zobacz też

Aby uzyskać więcej informacji na temat dodatkowych starterów Spring Boot dostępnych dla Microsoft Azure, zobacz Czym jest Spring Cloud Azure?

Aby uzyskać więcej informacji na temat dodatkowych usług magazynowania Azure, które można wywołać z aplikacji Spring Boot, zobacz następujące artykuły: