Spring Cloud Azure-resurshantering
Den här artikeln gäller för: ✔️ Version 4.14.0 ✔️ Version 5.8.0
Spring-projektet tillhandahåller en Spring Resources-abstraktion för att få åtkomst till ett antal lågnivåresurser. Projektet innehåller gränssnitt som Resource
, ResourceLoader
och ResourcePatternResolver
. Spring Cloud Azure implementerar dessa gränssnitt för Azure Storage-tjänster, vilket gör att du kan interagera med Azure Storage Blob och Filresurs med hjälp av Spring-programmeringsmodellen. Spring Cloud Azure tillhandahåller spring-cloud-azure-starter-storage-blob
och spring-cloud-azure-starter-storage-file-share
konfigurerar Azure Storage Blob och Azure Storage-filresurs automatiskt.
I följande tabell visas Azure Storage-relaterade bibliotek:
Starter | Tjänst | beskrivning |
---|---|---|
spring-cloud-azure-starter-storage-blob | Azure Storage Blob | Gör att ostrukturerade data kan lagras och nås i stor skala i blockblobar. |
spring-cloud-azure-starter-storage-file-share | Azure Storage-filresurs | Erbjuder fullständigt hanterade molnfilresurser som du kan komma åt var som helst via SMB-protokollet (Server Message Block). |
Beroendekonfiguration
<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>
Beroendet spring-cloud-azure-starter-storage-blob
krävs bara när du använder Azure Storage Blob.
Beroendet spring-cloud-azure-starter-storage-file-share
krävs bara när du använder Azure Storage-filresurs.
Dricks
Vi tillhandahåller spring-cloud-azure-starter-storage
även för att stödja alla funktioner i Storage. Om du väljer att använda den är spring.cloud.azure.storage.enable
egenskapen som ska konfigureras och standardvärdet är sant. Du kan sedan använda spring.cloud.azure.storage.<storage-service>.enable
för att inaktivera tjänster som inte behövs.
Konfiguration
Kommentar
Om du använder ett säkerhetsobjekt för att autentisera och auktorisera med Microsoft Entra-ID för åtkomst till en Azure-resurs måste du se till att säkerhetsobjektet har beviljats tillräcklig behörighet för att få åtkomst till Azure-resursen. Mer information finns i Auktorisera åtkomst med Microsoft Entra-ID.
I följande tabell visas de konfigurerbara egenskaperna för spring-cloud-azure-starter-storage-blob
:
Property | Standardvärde | beskrivning |
---|---|---|
spring.cloud.azure.storage.blob.enabled | true | Ett värde som anger om en Azure Blob Storage-tjänst är aktiverad. |
spring.cloud.azure.storage.blob.endpoint | URI:n för att ansluta till Azure Blob Storage. | |
spring.cloud.azure.storage.blob.account-key | Den privata nyckeln för att ansluta till Azure Blob Storage. | |
spring.cloud.azure.storage.blob.account-name | Azure Storage Blob-kontonamnet. |
I följande tabell visas de konfigurerbara egenskaperna för spring-cloud-azure-starter-storage-file-share
:
Property | Standardvärde | beskrivning |
---|---|---|
spring.cloud.azure.storage.fileshare.enabled | true | Ett värde som anger om Azure File Storage-tjänsten är aktiverad. |
spring.cloud.azure.storage.fileshare.endpoint | URI:n för att ansluta till Azure File Storage. | |
spring.cloud.azure.storage.fileshare.account-key | Den privata nyckeln för att ansluta till Azure File Storage. | |
spring.cloud.azure.storage.fileshare.account-name | Namnet på Azure Storage-filresurskontot. |
Grundläggande användning
Lägg till följande egenskaper i filen 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}
Hämta en resurs
Hämta en resurs med @Value
Du kan använda anteckningen för @Value("azure-blob://[your-container-name]/[your-blob-name]")
att autokoppla en blobresurs, som du ser i följande exempel:
@Value("azure-blob://[your-container-name]/[your-blob-name]")
private Resource storageBlobResource;
Du kan använda anteckningen för @Value("azure-file://[your-fileshare-name]/[your-file-name]")
att automatiskt koppla en filresurs, som du ser i följande exempel:
@Value("azure-file://[your-fileshare-name]/[your-file-name]")
private Resource storageFileResource;
Hämta en resurs med 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]");
Hämta resurser genom att söka i mönster
Du kan använda en implementeringsklass för ResourcePatternResolver
för att söka efter resurser. Använd AzureStorageBlobProtocolResolver
för att söka efter blob
resurser och AzureStorageFileProtocolResolver
söka efter file
resurser.
För mönstersökning
searchPattern
bör börja medazure-blob://
ellerazure-file://
. Det innebär till exempelazure-blob://**/**
att visa en lista över alla blobar i alla containrar ochazure-blob://demo-container/**
innebär att alla blobar i containerndemo-container
visas, inklusive alla undermappar.För platssökning
searchLocation
ska börja medazure-blob://
ellerazure-file://
och den återstående filsökvägen ska finnas, annars utlöses ett undantag.
@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");
Hantering med resurs
Ladda ned data från en specifik resurs
Du kan ladda ned en resurs från Azure Storage Blob eller Filresurs med getInputStream()
metoden 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();
Ladda upp data till en specifik resurs
Du kan ladda upp till en resurs till Azure Blob eller fillagring genom att casta Spring Resource
till WritableResource
, som du ser i följande exempel:
@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());
}
Uppladdning av flera delar
Filer som är större än 4 MiB laddas upp till Azure Storage parallellt.
Exempel
Se lagrings-blob-sample- och storage-file-sample-lagringsplatser på GitHub.