Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa esercitazione illustra come caricare e leggere dai BLOB in un account Azure Blob Storage tramite un'applicazione Spring Boot.
Azure Blob Storage è la soluzione di archiviazione oggetti di Microsoft per il cloud. L'archiviazione BLOB è ottimizzata per l'archiviazione di una grande quantità di dati non strutturati, ad esempio dati di testo o binari.
Prerequisiti
- Una sottoscrizione Azure - crearne una gratuitamente.
- Java Development Kit (JDK) versione 8 o successiva.
- Apache Maven, versione 3.0 o successiva.
- cURL o un'utilità HTTP simile per testare la funzionalità.
- Un account di archiviazione e un contenitore Azure. Se non ne hai uno, crea un account di archiviazione.
- Applicazione Spring Boot. Se non ne hai uno, crea un progetto Maven con Spring Initializr. Assicurarsi di selezionare Maven Project e, in Dependencies aggiungere la dipendenza web Spring Web e quindi selezionare Java versione 8 o successiva.
Nota
Per concedere all'account l'accesso alle risorse, nell'account Azure Storage appena creato assegnare il ruolo Storage Blob Data Contributor all'account Microsoft Entra attualmente in uso. Per altre informazioni, vedere Assegnare i ruoli di Azure utilizzando il portale di Azure.
Importante
Spring Boot versione 2.5 o successiva è necessario per completare i passaggi di questa esercitazione.
Creazione di un contenitore
Creare prima di tutto un contenitore denominato testcontainer seguendo le istruzioni riportate in Quickstart: Caricare, scaricare ed elencare BLOB con il portale di Azure.
Caricare e leggere blob dal contenitore dell'account di archiviazione di Azure
Dopo aver creato un account e un contenitore Azure Storage, è possibile caricare e leggere file dai BLOB con Spring Cloud Azure.
Per installare il modulo Spring Cloud Azure Storage Blob Starter, aggiungere le dipendenze seguenti al file pom.xml:
L'elenco dei materiali di Spring Cloud Azure (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>7.1.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Nota
Se si usa Spring Boot 4.0.x, assicurarsi di impostare la
spring-cloud-azure-dependenciesversione su7.1.0.Se si usa Spring Boot 3.5.x, assicurarsi di impostare la
spring-cloud-azure-dependenciesversione su6.1.0.Se si usa Spring Boot 3.1.x-3.5.x, assicurarsi di impostare la
spring-cloud-azure-dependenciesversione su5.25.0.Se si usa Spring Boot 2.x, assicurarsi di impostare la
spring-cloud-azure-dependenciesversione su4.20.0.Questo Bill of Material (BOM) deve essere configurato nella sezione
<dependencyManagement>del file pom.xml. In questo modo, tutte le dipendenze di Spring Cloud Azure usano la stessa versione.Per ulteriori informazioni sulla versione utilizzata per questo BOM, vedere Quale versione di Spring Cloud Azure dovrei usare.
L'artefatto Spring Cloud Azure Storage Blob Starter:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-storage-blob</artifactId> </dependency>
Codice dell'applicazione
Per caricare e leggere file da BLOB usando Spring Cloud Azure Storage Blob Starter, configurare l'applicazione seguendo questa procedura.
Configurare un nome e un endpoint dell'account di archiviazione nel file di configurazione application.properties , come illustrato nell'esempio seguente.
spring.cloud.azure.storage.blob.account-name=${AZURE_STORAGE_ACCOUNT_NAME} spring.cloud.azure.storage.blob.endpoint=${AZURE_STORAGE_ACCOUNT_ENDPOINT}Creare una nuova classe
BlobControllerJava come illustrato nell'esempio seguente. Questa classe viene usata per caricare e leggere file dal BLOB del contenitore nell'account 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"; } }Suggerimento
In questa esercitazione non sono presenti operazioni di autenticazione nelle configurazioni o nel codice. Tuttavia, la connessione ai servizi di Azure richiede l'autenticazione. Per completare l'autenticazione, è necessario usare Azure Identity. Spring Cloud Azure usa
DefaultAzureCredential, che la libreria di identità Azure fornisce per ottenere le credenziali senza modifiche al codice.DefaultAzureCredentialsupporta più metodi di autenticazione e determina il metodo da usare in fase di esecuzione. Questo approccio consente all'app di usare metodi di autenticazione diversi in ambienti diversi (ad esempio ambienti locali e di produzione) senza implementare codice specifico dell'ambiente. Per altre informazioni, vedere DefaultAzureCredential.Per completare l'autenticazione negli ambienti di sviluppo locali, è possibile usare Azure CLI, Visual Studio Code, PowerShell o altri metodi. Per altre informazioni, vedere autenticazione Azure in ambienti di sviluppo Java. Per completare l'autenticazione negli ambienti di hosting Azure, è consigliabile usare l'identità gestita assegnata dall'utente. Per altre informazioni, vedere Che sono identità gestite per le risorse Azure?
Dopo l'esecuzione dell'applicazione, usare
curlper testare l'applicazione seguendo questa procedura.Inviare una richiesta POST per aggiornare il contenuto di un file usando il comando seguente:
curl http://localhost:8080/blob/writeBlobFile -d "new message" -H "Content-Type: text/plain"Verrà visualizzata una risposta che indica
file was updated.Inviare una richiesta GET per verificare il contenuto del file usando il comando seguente:
curl -X GET http://localhost:8080/blob/readBlobFileVerrà visualizzato il testo "nuovo messaggio" pubblicato.
Distribuire su Azure Spring Apps
Ora che l'applicazione Spring Boot è in esecuzione in locale, è possibile spostarla nell'ambiente di produzione. Azure Spring Apps semplifica la distribuzione di applicazioni Spring Boot in Azure senza modifiche al codice. Il servizio gestisce l'infrastruttura delle applicazioni Spring per consentire agli sviluppatori di concentrarsi sul codice. Azure Spring Apps offre la gestione del ciclo di vita usando monitoraggio e diagnostica completi, gestione della configurazione, individuazione dei servizi, integrazione CI/CD, distribuzioni blu-verde e altro ancora. Per distribuire l'applicazione in Azure Spring Apps, vedere Distribuire la prima applicazione in Azure Spring Apps.
Passaggi successivi
Per altre informazioni su Spring e Azure, passare al centro documentazione Spring on Azure.
Vedi anche
Per altre informazioni sugli starter Spring Boot aggiuntivi disponibili per Microsoft Azure, vedere Che è Spring Cloud Azure?
Per altre informazioni sulle API di archiviazione aggiuntive Azure che è possibile chiamare dalle applicazioni Spring Boot, vedere gli articoli seguenti: