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 metazure-blob://
ofazure-file://
.azure-blob://**/**
betekent bijvoorbeeld dat alle blobs in alle containers worden weergegeven enazure-blob://demo-container/**
betekent dat alle blobs in dedemo-container
container worden weergegeven, inclusief submappen.Voor locatiezoekopdrachten moet de
searchLocation
beginnen metazure-blob://
ofazure-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 WritableResource
te 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.