Condividi tramite


Usare Spring Boot per caricare un file in Azure Blob Storage

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

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-dependencies versione su 7.1.0.

    Se si usa Spring Boot 3.5.x, assicurarsi di impostare la spring-cloud-azure-dependencies versione su 6.1.0.

    Se si usa Spring Boot 3.1.x-3.5.x, assicurarsi di impostare la spring-cloud-azure-dependencies versione su 5.25.0.

    Se si usa Spring Boot 2.x, assicurarsi di impostare la spring-cloud-azure-dependencies versione su 4.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.

  1. 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}
    
  2. Creare una nuova classe BlobController Java 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.

    DefaultAzureCredential supporta 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?

  3. Dopo l'esecuzione dell'applicazione, usare curl per testare l'applicazione seguendo questa procedura.

    1. 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.

    2. Inviare una richiesta GET per verificare il contenuto del file usando il comando seguente:

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

      Verrà 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: