Megosztás a következőn keresztül:


Spring Cloud Azure-erőforrás-kezelés

A Spring-projekt Spring Resources absztrakciót biztosít számos alacsony szintű erőforrás eléréséhez. A projekt olyan felületeket biztosít, mint Resource, ResourceLoader és ResourcePatternResolver. A Spring Cloud Azure implementálja ezeket a felületeket az Azure Storage-szolgáltatásokhoz, amelyek lehetővé teszik az Azure Storage Blob és a Fájlmegosztás használatát a Spring programozási modell használatával. A Spring Cloud Azure spring-cloud-azure-starter-storage-blob és spring-cloud-azure-starter-storage-file-share biztosít az Azure Storage Blob és az Azure Storage-fájlmegosztás automatikus konfigurálásához.

Az alábbi táblázat az Azure Storage-tal kapcsolatos kódtárakat sorolja fel:

Induló Szolgáltatás Leírás
spring-cloud-azure-starter-storage-blob Azure Storage-blob Lehetővé teszi a strukturálatlan adatok tömeges tárolását és elérését blokkblobokban.
spring-cloud-azure-starter-storage-file-share Azure Storage-fájlmegosztás Teljes mértékben felügyelt felhőbeli fájlmegosztásokat kínál, amelyek bárhonnan elérhetők az iparági szabvány kiszolgálói üzenetblokk (SMB) protokollon keresztül.

Függőség beállítása

<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>

A spring-cloud-azure-starter-storage-blob függőségre csak az Azure Storage Blob használatakor van szükség.

A spring-cloud-azure-starter-storage-file-share függőség csak az Azure Storage-fájlmegosztás használatakor szükséges.

Borravaló

Emellett spring-cloud-azure-starter-storage biztosítunk a Storage összes funkciójának támogatásához. Ha úgy dönt, hogy használja, spring.cloud.azure.storage.enable a konfigurálni kívánt tulajdonság, és az alapértelmezett érték true. Ezután a spring.cloud.azure.storage.<storage-service>.enable használatával letilthatja a szükségtelen szolgáltatásokat.

Konfiguráció

Jegyzet

Ha biztonsági taggal hitelesíti és engedélyezi a Microsoft Entra-azonosítót egy Azure-erőforrás eléréséhez, győződjön meg arról, hogy a biztonsági tag megfelelő engedélyt kapott az Azure-erőforrás eléréséhez. További információ: Hozzáférés engedélyezése a Microsoft Entra-azonosítóval.

Az alábbi táblázat a spring-cloud-azure-starter-storage-blobkonfigurálható tulajdonságait sorolja fel:

Ingatlan Alapértelmezett Leírás
spring.cloud.azure.storage.blob.enabled igaz Egy érték, amely jelzi, hogy engedélyezve van-e egy Azure Blob Storage-szolgáltatás.
spring.cloud.azure.storage.blob.endpoint Az Azure Blob Storage-hoz való csatlakozáshoz használt URI.
spring.cloud.azure.storage.blob.account-key Az Azure Blob Storage-hoz való csatlakozás titkos kulcsa.
spring.cloud.azure.storage.blob.account-name Az Azure Storage Blob-fiók neve.

Az alábbi táblázat a spring-cloud-azure-starter-storage-file-sharekonfigurálható tulajdonságait sorolja fel:

Ingatlan Alapértelmezett Leírás
spring.cloud.azure.storage.fileshare.enabled igaz Egy érték, amely jelzi, hogy az Azure File Storage szolgáltatás engedélyezve van-e.
spring.cloud.azure.storage.fileshare.endpoint Az Azure File Storage-hoz való csatlakozáshoz használt URI.
spring.cloud.azure.storage.fileshare.account-key Az Azure File Storage-hoz való csatlakozás titkos kulcsa.
spring.cloud.azure.storage.fileshare.account-name Az Azure Storage-fájlmegosztási fiók neve.

Alapszintű használat

Adja hozzá a következő tulajdonságokat a application.yml fájlhoz:

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}

Erőforrás lekérése

Erőforrás lekérése @Value

Az @Value("azure-blob://[your-container-name]/[your-blob-name]") széljegyzete segítségével automatikusan beszúrhat egy bloberőforrást az alábbi példában látható módon:

@Value("azure-blob://[your-container-name]/[your-blob-name]")
private Resource storageBlobResource;

A @Value("azure-file://[your-fileshare-name]/[your-file-name]") széljegyzetével automatikusan bevihet egy fájlerőforrást, ahogy az alábbi példában is látható:

@Value("azure-file://[your-fileshare-name]/[your-file-name]")
private Resource storageFileResource;

Erőforrás lekérése a ResourceLoaderrel

@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]");

Erőforrások lekérése keresési mintával

Az erőforrások kereséséhez használhatja a ResourcePatternResolver implementációs osztályát. A AzureStorageBlobProtocolResolver segítségével kereshet blob erőforrásokban, és AzureStorageFileProtocolResolver kereshet file erőforrásokban.

  • A mintakereséshez a searchPatternazure-blob:// vagy azure-file://kell kezdődnie. A azure-blob://**/** például azt jelenti, hogy az összes tárolóban az összes blobot listázni kell, azure-blob://demo-container/** pedig azt jelenti, hogy a demo-container tárolóban lévő összes blobot listázni kell, beleértve az almappákat is.

  • A helykereséshez a searchLocationazure-blob:// vagy azure-file:// kell kezdődnie, a fennmaradó fájl elérési útjának pedig léteznie kell, ellenkező esetben kivétel jelenik meg.

@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");

Kezelés erőforrással

Adatok letöltése adott erőforrásból

Az azure storage-blobból vagy a fájlmegosztásból az getInputStream()Resource metódusával tölthet le egy erőforrást.

@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();

Adatok feltöltése adott erőforrásba

Feltölthet egy erőforrást az Azure Blobba vagy a fájltárolóba úgy, hogy a Spring ResourceWritableResource-ra adhatja, ahogy az alábbi példában látható:

@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());
}

Többrészes feltöltés

A 4 MiB-nél nagyobb fájlok párhuzamosan lesznek feltöltve az Azure Storage-ba.

Minták

Tekintse meg a storage-blob-sample és storage-file-sample adattárakat a GitHubon.