Delen via


Verwerking van Spring Cloud Azure-resources

Dit artikel is van toepassing op:✅ versie 4.19.0 ✅ versie 5.19.0

Het Spring-project biedt een Spring Resources abstractie voor toegang tot een aantal resources op laag niveau. Het project biedt interfaces zoals Resource, ResourceLoader en ResourcePatternResolver. Spring Cloud Azure implementeert deze interfaces voor Azure Storage-services, waarmee u kunt communiceren met Azure Storage Blob en Bestandsshare met behulp van het Spring-programmeermodel. Spring Cloud Azure biedt spring-cloud-azure-starter-storage-blob en spring-cloud-azure-starter-storage-file-share voor het automatisch configureren van Azure Storage Blob en Azure Storage-bestandsshare.

De volgende tabel bevat gerelateerde Bibliotheken voor Azure Storage:

Starter Dienst Beschrijving
spring-cloud-azure-starter-storage-blob Azure Storage Blob Hiermee kunnen ongestructureerde gegevens op grote schaal worden opgeslagen en geopend in blok-blobs.
spring-cloud-azure-starter-storage-file-share Azure Storage-bestandsshare Biedt volledig beheerde cloudbestandsshares die u overal kunt openen via het SMB-protocol (Server Message Block) van de industriestandaard.

Afhankelijkheid instellen

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

De spring-cloud-azure-starter-storage-blob-afhankelijkheid is alleen vereist wanneer u Azure Storage Blob gebruikt.

De spring-cloud-azure-starter-storage-file-share-afhankelijkheid is alleen vereist wanneer u azure Storage-bestandsshare gebruikt.

Fooi

We bieden ook spring-cloud-azure-starter-storage ter ondersteuning van alle functies van Storage. Als u ervoor kiest deze te gebruiken, is spring.cloud.azure.storage.enable de eigenschap die moet worden geconfigureerd en de standaardwaarde is waar. Vervolgens kunt u spring.cloud.azure.storage.<storage-service>.enable gebruiken om overbodige services uit te schakelen.

Configuratie

Notitie

Als u een beveiligingsprincipaal gebruikt om te verifiëren en autoriseren met Microsoft Entra ID voor toegang tot een Azure-resource, moet u ervoor zorgen dat aan de beveiligingsprincipaal voldoende machtigingen zijn verleend voor toegang tot de Azure-resource. Zie Toegang autoriseren met Microsoft Entra IDvoor meer informatie.

De volgende tabel bevat de configureerbare eigenschappen van spring-cloud-azure-starter-storage-blob:

Eigenschap Verstek Beschrijving
spring.cloud.azure.storage.blob.enabled waar Een waarde die aangeeft of een Azure Blob Storage-service is ingeschakeld.
spring.cloud.azure.storage.blob.endpoint De URI om verbinding te maken met Azure Blob Storage.
spring.cloud.azure.storage.blob.account-key De persoonlijke sleutel om verbinding te maken met Azure Blob Storage.
spring.cloud.azure.storage.blob.account-name De naam van het Azure Storage Blob-account.

De volgende tabel bevat de configureerbare eigenschappen van spring-cloud-azure-starter-storage-file-share:

Eigenschap Verstek Beschrijving
spring.cloud.azure.storage.fileshare.enabled waar Een waarde die aangeeft of de Azure File Storage-service is ingeschakeld.
spring.cloud.azure.storage.fileshare.endpoint De URI om verbinding te maken met Azure File Storage.
spring.cloud.azure.storage.fileshare.account-key De persoonlijke sleutel om verbinding te maken met Azure File Storage.
spring.cloud.azure.storage.fileshare.account-name De naam van het Azure Storage-bestandsshareaccount.

Basisgebruik

Voeg de volgende eigenschappen toe aan uw application.yml-bestand:

spring:
  cloud:
    azure:
      storage:
        blob:
          account-name: ${STORAGE_ACCOUNT_NAME}
          account-key: ${STORAGE_ACCOUNT_KEY}
          endpoint: ${STORAGE_BLOB_ENDPOINT}
        fileshare:
          account-name: ${STORAGE_ACCOUNT_NAME}
          account-key: ${STORAGE_ACCOUNT_KEY}
          endpoint:  ${STORAGE_FILESHARE_ENDPOINT}

Een resource ophalen

Een resource ophalen met @Value

U kunt de aantekening van @Value("azure-blob://[your-container-name]/[your-blob-name]") gebruiken om een blobresource automatisch te verbinden, zoals wordt weergegeven in het volgende voorbeeld:

@Value("azure-blob://[your-container-name]/[your-blob-name]")
private Resource storageBlobResource;

U kunt de aantekening van @Value("azure-file://[your-fileshare-name]/[your-file-name]") gebruiken om een bestandsresource automatisch te verbinden, zoals wordt weergegeven in het volgende voorbeeld:

@Value("azure-file://[your-fileshare-name]/[your-file-name]")
private Resource storageFileResource;

Een resource ophalen met ResourceLoader

@Autowired
private ResourceLoader resourceLoader;
...
// Get a BlobResource.
Resource storageBlobResource = resourceLoader.getResource("azure-blob://[your-container-name]/[your-blob-name]");

// Get a FileResource.
Resource storageFileResource = resourceLoader.getResource("azure-file://[your-fileshare-name]/[your-file-name]");

Resources ophalen door een patroon te zoeken

U kunt een implementatieklasse van ResourcePatternResolver gebruiken om resources te zoeken. Gebruik AzureStorageBlobProtocolResolver om blob resources te zoeken en AzureStorageFileProtocolResolver om file resources te doorzoeken.

  • Voor patroonzoekopdrachten moet de searchPattern beginnen met azure-blob:// of azure-file://. azure-blob://**/** betekent bijvoorbeeld dat alle blobs in alle containers worden weergegeven en azure-blob://demo-container/** betekent dat alle blobs in de demo-container container worden weergegeven, inclusief submappen.

  • Voor locatiezoekopdrachten moet de searchLocation beginnen met azure-blob:// of azure-file:// en moet het resterende bestandspad bestaan, anders wordt er een uitzondering gegenereerd.

@Autowired
private AzureStorageBlobProtocolResolver azureStorageBlobProtocolResolver;

@Autowired
private AzureStorageFileProtocolResolver azureStorageFileProtocolResolver;

// Get all text blobs.
Resource[] blobTextResources = azureStorageBlobProtocolResolver.getResources("azure-blob://[container-pattern]/*.txt");

// Get all text files.
Resource[] fileTextResources = azureStorageFileProtocolResolver.getResources("azure-file://[fileshare-pattern]/*.txt");

Verwerken met resource

Gegevens downloaden van een specifieke resource

U kunt een resource downloaden uit Azure Storage Blob of Bestandsshare met de getInputStream() methode van Resource.

@Value("azure-blob://[your-container-name]/[your-blob-name]")
private Resource storageBlobResource;

@Value("azure-file://[your-fileshare-name]/[your-file-name]")
private Resource storageFileResource;

//...

// Download data as a stream from a blob resource.
InputStream inputblobStream = storageBlobResource.getInputStream();

// Download data as a stream from a file resource.
InputStream inputfileStream = storageFileResource.getInputStream();

Gegevens uploaden naar een specifieke resource

U kunt uploaden naar een resource naar Azure Blob of bestandsopslag door de Spring-Resource naar WritableResourcete casten, zoals wordt weergegeven in het volgende voorbeeld:

@Value("azure-blob://[your-container-name]/[your-blob-name]")
private Resource storageBlobResource;

@Value("azure-file://[your-fileshare-name]/[your-file-name]")
private Resource storageFileResource;

String data = "sampledata";

// Upload string data to a blob.
try (OutputStream blobos = ((WritableResource) this.storageBlobResource).getOutputStream()) {
    blobos.write(data.getBytes());
}

// Upload string data to a file.
try (OutputStream fileos = ((WritableResource) this.storageFileResource).getOutputStream()) {
    fileos.write(data.getBytes());
}

Uploaden met meerdere onderdelen

Bestanden die groter zijn dan 4 MiB, worden parallel geüpload naar Azure Storage.

Monsters

Zie de storage-blob-sample en storage-file-sample opslagplaatsen op GitHub.