Verwerking van Spring Cloud Azure-resources

Dit artikel is van toepassing op: ✔️ versie 4.14.0 ✔️ versie 5.8.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 om Azure Storage Blob en Azure Storage-bestandsshare automatisch te configureren.

De volgende tabel bevat gerelateerde Bibliotheken voor Azure Storage:

Starter Service 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.

Tip

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

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-id voor meer informatie.

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

Eigenschappen Standaard Beschrijving
spring.cloud.azure.storage.blob.enabled true 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:

Eigenschappen Standaard Beschrijving
spring.cloud.azure.storage.fileshare.enabled true 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.

Basaal gebruik

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

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]") een blobresource automatisch 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]") een bestandsresource gebruiken, 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 gebruiken om ResourcePatternResolver resources te doorzoeken. Gebruik AzureStorageBlobProtocolResolver dit om resources te zoeken blob en AzureStorageFileProtocolResolver resources te doorzoeken file .

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

  • Voor locatiezoekopdrachten moet het searchLocation beginnen met azure-blob:// of azure-file:// en 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 te WritableResourcecasten, 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.

Voorbeelden

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