Dela via


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 med azure-blob:// eller azure-file://. Det innebär till exempel azure-blob://**/** att visa en lista över alla blobar i alla containrar och azure-blob://demo-container/** innebär att alla blobar i containern demo-container visas, inklusive alla undermappar.

  • För platssökning searchLocation ska börja med azure-blob:// eller azure-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.