Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
- Subskrypcja Azure — utwórz ją bezpłatnie.
- Java Development Kit (JDK) w wersji 8 lub nowszej.
- Apache Maven, wersja 3.0 lub nowsza.
- cURL lub podobne narzędzie HTTP do testowania funkcjonalności.
- Konto magazynu danych i kontener Azure. Jeśli go nie masz, utwórz konto magazynowe.
- Aplikacja Spring Boot. Jeśli go nie masz, utwórz projekt Maven za pomocą narzędzia Spring Initializr. Pamiętaj, aby wybrać Maven Project i w sekcji Dependencies dodać Spring Web, a następnie wybierz wersję Java 8 lub nowszą.
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-dependencieswersję na7.2.0.Jeśli używasz platformy Spring Boot 3.5.x, pamiętaj, aby ustawić
spring-cloud-azure-dependencieswersję na6.2.0.Jeśli używasz platformy Spring Boot 3.1.x-3.5.x, pamiętaj, aby ustawić
spring-cloud-azure-dependencieswersję na5.25.0.Jeśli używasz środowiska Spring Boot 2.x, ustaw wersję
spring-cloud-azure-dependenciesna4.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.
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}Utwórz nową klasę
BlobControllerJava, 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.DefaultAzureCredentialobsł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?
Po uruchomieniu aplikacji użyj polecenia
curl, aby przetestować aplikację, wykonując następujące kroki.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.Wyślij żądanie GET, aby zweryfikować zawartość pliku przy użyciu następującego polecenia:
curl -X GET http://localhost:8080/blob/readBlobFilePowinieneś 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: