Partilhar via


Use o Spring Boot para carregar um ficheiro no Azure Blob Storage

Este tutorial mostra-lhe como carregar e ler a partir de blobs de contentores numa conta Azure Blob Storage a partir de uma aplicação Spring Boot.

Azure Blob Storage é a solução de armazenamento de objetos da Microsoft para a cloud. O armazenamento de Blob é otimizado para armazenar uma grande quantidade de dados não estruturados, como texto ou dados binários.

Pré-requisitos

  • Uma subscrição do Azure - crie uma gratuitamente.
  • Kit de Desenvolvimento Java (JDK) versão 8 ou superior.
  • Apache Maven, versão 3.0 ou superior.
  • cURL ou um utilitário HTTP semelhante para testar a funcionalidade.
  • Uma conta de armazenamento Azure e um contentor. Se você não tiver uma, crie uma conta de armazenamento.
  • Um aplicativo Spring Boot. Se você não tiver um, crie um projeto Maven com o Spring Initializr. Certifique-se de selecionar Maven Project e, em Dependencies, adicionar a dependência Spring Web e depois selecionar Java versão 8 ou superior.

Nota

Para dar acesso à sua conta a recursos, na sua conta Azure Storage recém-criada, atribua o papel Storage Blob Data Contributor à conta Microsoft Entra que está a usar atualmente. Para mais informações, consulte Atribuir Azure funções usando o portal Azure.

Importante

O Spring Boot versão 2.5 ou superior é necessário para concluir as etapas neste tutorial.

Criar um contentor

Primeiro, crie um contentor chamado testcontainer seguindo as instruções do Quickstart: Carregar, descarregar e listar blobs no portal Azure.

Carregar e ler blobs a partir do contentor da conta do Azure Storage

Agora que tem uma conta e um contentor no Azure Storage, pode carregar e ler ficheiros de blobs com o Spring Cloud Azure.

Para instalar o módulo Spring Cloud Azure Storage Blob Starter, adicione as seguintes dependências ao seu ficheiro pom.xml:

  • A Lista de Materiais 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 estiveres a usar o Spring Boot 4.0.x, certifica-te de definir a spring-cloud-azure-dependencies versão para 7.1.0.

    Se estiveres a usar o Spring Boot 3.5.x, certifica-te de definir a spring-cloud-azure-dependencies versão para 6.1.0.

    Se estiveres a usar o Spring Boot 3.1.x-3.5.x, certifica-te de definir a spring-cloud-azure-dependencies versão para 5.25.0.

    Se você estiver usando o Spring Boot 2.x, certifique-se de definir a versão spring-cloud-azure-dependencies como 4.20.0.

    Esta lista de materiais (BOM) deve ser configurada na seção <dependencyManagement> do seu arquivo pom.xml. Isto garante que todas as dependências do Spring Cloud Azure usam a mesma versão.

    Para mais informações sobre a versão usada nesta BOM, consulte Qual Versão do Spring Cloud Azure Devo Usar.

  • The Spring Cloud Azure Storage Blob Starter artefacto:

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

Codificar a aplicação

Para carregar e ler ficheiros de blobs usando o Spring Cloud Azure Storage Blob starter, configure a aplicação seguindo os seguintes passos.

  1. Configure um nome para a conta de armazenamento e um ponto de extremidade no ficheiro de configuração application.properties, conforme mostrado no exemplo a seguir.

    spring.cloud.azure.storage.blob.account-name=${AZURE_STORAGE_ACCOUNT_NAME}
    spring.cloud.azure.storage.blob.endpoint=${AZURE_STORAGE_ACCOUNT_ENDPOINT}
    
  2. Crie uma nova classe BlobController Java como mostrado no exemplo seguinte. Esta classe é usada para carregar e ler ficheiros do blob do contentor na conta do 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";
        }
    }
    

    Gorjeta

    Neste tutorial, não há operações de autenticação nas configurações ou no código. No entanto, a ligação aos serviços do Azure requer autenticação. Para completar a autenticação, precisa de usar o Azure Identity. O Spring Cloud Azure utiliza DefaultAzureCredential, que a biblioteca Azure Identity fornece para te ajudar a obter credenciais sem quaisquer alterações de código.

    DefaultAzureCredential Suporta vários métodos de autenticação e determina qual método usar em tempo de execução. Essa abordagem permite que seu aplicativo use diferentes métodos de autenticação em ambientes diferentes (como ambientes locais e de produção) sem implementar código específico do ambiente. Para obter mais informações, consulte DefaultAzureCredential.

    Para completar a autenticação em ambientes de desenvolvimento locais, pode usar Azure CLI, Visual Studio Code, PowerShell ou outros métodos. Para mais informações, consulte Autenticação do Azure em ambientes de desenvolvimento Java. Para completar a autenticação em ambientes de alojamento Azure, recomendamos a utilização da identidade gerida atribuída pelo utilizador. Para mais informações, consulte O que são identidades geridas para Azure recursos?

  3. Depois que o aplicativo estiver em execução, use curl para testar o aplicativo seguindo estas etapas.

    1. Envie uma solicitação POST para atualizar o conteúdo de um arquivo usando o seguinte comando:

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

      Você deve ver uma resposta que diz file was updated.

    2. Envie uma solicitação GET para verificar o conteúdo do arquivo usando o seguinte comando:

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

      Deverá ver o texto da "nova mensagem" que publicou.

Desdobrar para o Azure Spring Apps

Agora que você tem o aplicativo Spring Boot em execução localmente, é hora de movê-lo para a produção. Azure Spring Apps facilita a implementação de aplicações Spring Boot para Azure sem quaisquer alterações de código. O serviço gerencia a infraestrutura dos aplicativos Spring para que os desenvolvedores possam se concentrar em seu código. O Azure Spring Apps oferece gestão do ciclo de vida através de monitorização e diagnóstico abrangentes, gestão de configuração, descoberta de serviços, integração CI/CD, implementações azul-verde e muito mais. Para implementar a sua aplicação para Azure Spring Apps, consulte Implante a sua primeira aplicação para Azure Spring Apps.

Próximos passos

Para saber mais sobre Spring e Azure, continue para o centro de documentação Spring on Azure.

Consulte também

Para mais informações sobre os Spring Boot Starters adicionais disponíveis para Microsoft Azure, veja O que é o Spring Cloud Azure?

Para mais informações sobre APIs adicionais de armazenamento do Azure que pode invocar a partir das suas aplicações Spring Boot, consulte os seguintes artigos: