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 metazure-blob://
ofazure-file://
. Dit betekent bijvoorbeeldazure-blob://**/**
dat alle blobs in alle containers worden weergegeven enazure-blob://demo-container/**
dat alle blobs in dedemo-container
container worden weergegeven, inclusief submappen.Voor locatiezoekopdrachten moet het
searchLocation
beginnen metazure-blob://
ofazure-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 WritableResource
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.
Voorbeelden
Zie de opslagplaatsen voor storage-blob-sample en storage-file-sample op GitHub.
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor