Bagikan melalui


Penanganan sumber daya Spring Cloud Azure

Proyek Spring menyediakan abstraksi Sumber Daya Spring untuk mengakses sejumlah sumber daya tingkat rendah. Proyek ini menyediakan antarmuka seperti Resource, ResourceLoader, dan ResourcePatternResolver. Spring Cloud Azure mengimplementasikan antarmuka ini untuk layanan Azure Storage, yang memungkinkan Anda berinteraksi dengan Blob penyimpanan Azure dan Berbagi File menggunakan model pemrograman Spring. Spring Cloud Azure menyediakan spring-cloud-azure-starter-storage-blob dan spring-cloud-azure-starter-storage-file-share untuk mengonfigurasi Azure Storage Blob dan Azure Storage File Share secara otomatis.

Tabel berikut ini mencantumkan pustaka terkait Azure Storage:

Starter Dinas Deskripsi
spring-cloud-azure-starter-storage-blob Azure Storage Blob Memungkinkan data yang tidak terstruktur disimpan dan diakses pada skala besar dalam blob blok.
Spring-cloud-azure-starter-storage-file-share Berbagi File Azure Storage Menawarkan berbagi file cloud yang dikelola sepenuhnya yang dapat Anda akses dari mana saja melalui protokol Blok Pesan Server (SMB) standar industri.

Penyiapan dependensi

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

Dependensi spring-cloud-azure-starter-storage-blob hanya diperlukan saat Anda menggunakan Azure Storage Blob.

Dependensi spring-cloud-azure-starter-storage-file-share hanya diperlukan saat Anda menggunakan Azure Storage File Share.

Ujung

Kami juga menyediakan spring-cloud-azure-starter-storage untuk mendukung semua fitur Storage. Jika Anda memilih untuk menggunakannya, spring.cloud.azure.storage.enable adalah properti untuk dikonfigurasi dan nilai defaultnya adalah true. Anda kemudian dapat menggunakan spring.cloud.azure.storage.<storage-service>.enable untuk menonaktifkan layanan yang tidak diperlukan.

Konfigurasi

Nota

Jika Anda menggunakan prinsip keamanan untuk mengautentikasi dan mengotorisasi dengan ID Microsoft Entra untuk mengakses sumber daya Azure, pastikan prinsip keamanan telah diberikan izin yang memadai untuk mengakses sumber daya Azure. Untuk informasi selengkapnya, lihat Mengotorisasi akses dengan ID Microsoft Entra.

Tabel berikut mencantumkan properti spring-cloud-azure-starter-storage-blobyang dapat dikonfigurasi :

Harta benda Bawaan Deskripsi
spring.cloud.azure.storage.blob.enabled benar Nilai yang menunjukkan apakah layanan Azure Blob Storage diaktifkan.
spring.cloud.azure.storage.blob.endpoint URI untuk menyambungkan ke Azure Blob Storage.
spring.cloud.azure.storage.blob.account-key Kunci privat untuk menyambungkan ke Azure Blob Storage.
spring.cloud.azure.storage.blob.account-name Nama akun Azure Storage Blob.

Tabel berikut mencantumkan properti spring-cloud-azure-starter-storage-file-shareyang dapat dikonfigurasi :

Harta benda Bawaan Deskripsi
musim semi.cloud.azure.storage.fileshare.enabled benar Nilai yang menunjukkan apakah layanan Azure File Storage diaktifkan.
musim semi.cloud.azure.storage.fileshare.endpoint URI untuk menyambungkan ke Azure File Storage.
musim semi.cloud.azure.storage.fileshare.account-key Kunci privat untuk menyambungkan ke Azure File Storage.
musim semi.cloud.azure.storage.fileshare.account-name Nama akun Berbagi File Azure Storage.

Penggunaan dasar

Tambahkan properti berikut ke file application.yml Anda:

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}

Mendapatkan sumber daya

Mendapatkan sumber daya dengan @Value

Anda dapat menggunakan anotasi @Value("azure-blob://[your-container-name]/[your-blob-name]") untuk mengotomatiskan sumber daya blob, seperti yang ditunjukkan dalam contoh berikut:

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

Anda dapat menggunakan anotasi @Value("azure-file://[your-fileshare-name]/[your-file-name]") untuk mengotomatiskan sumber daya file, seperti yang ditunjukkan dalam contoh berikut:

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

Mendapatkan sumber daya dengan 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]");

Mendapatkan sumber daya dengan mencari pola

Anda dapat menggunakan kelas implementasi ResourcePatternResolver untuk mencari sumber daya. Gunakan AzureStorageBlobProtocolResolver untuk mencari sumber daya blob dan AzureStorageFileProtocolResolver untuk mencari sumber daya file.

  • Untuk pencarian pola, searchPattern harus dimulai dengan azure-blob:// atau azure-file://. Misalnya, azure-blob://**/** berarti mencantumkan semua blob di semua kontainer, dan azure-blob://demo-container/** berarti mencantumkan semua blob dalam kontainer demo-container, termasuk sub-folder apa pun.

  • Untuk pencarian lokasi, searchLocation harus dimulai dengan azure-blob:// atau azure-file:// dan jalur file yang tersisa harus ada, jika tidak, pengecualian akan dilemparkan.

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

Penanganan dengan sumber daya

Mengunduh data dari sumber daya tertentu

Anda dapat mengunduh sumber daya dari Azure Storage Blob atau File Share dengan metode getInputStream()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();

Mengunggah data ke sumber daya tertentu

Anda dapat mengunggah ke sumber daya ke Azure Blob atau penyimpanan file dengan mentransmisikan Spring Resource ke WritableResource, seperti yang ditunjukkan dalam contoh berikut:

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

Unggahan multipihak

File yang lebih besar dari 4 MiB akan diunggah ke Azure Storage secara paralel.

Sampel

Lihat storage-blob-sample dan repositori storage-file-sample di GitHub.