Penanganan sumber daya Spring Cloud Azure
Artikel ini berlaku untuk: ✔️ Versi 4.14.0 ✔️ Versi 5.8.0
Proyek Spring menyediakan abstraksi Spring Resources 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 | Layanan | Deskripsi |
---|---|---|
spring-cloud-azure-starter-storage-blob | Azure Storage Blob | Memungkinkan data yang tidak terstruktur disimpan dan diakses dalam skala besar dalam blob blok. |
spring-cloud-azure-starter-storage-file-share | Berbagi File Azure Storage | Menawarkan berbagi file cloud terkelola 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.
Tip
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
Catatan
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 MICROSOFT Entra ID.
Tabel berikut mencantumkan properti yang dapat dikonfigurasi dari spring-cloud-azure-starter-storage-blob
:
Properti | Default | 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 yang dapat dikonfigurasi dari spring-cloud-azure-starter-storage-file-share
:
Properti | Default | Deskripsi |
---|---|---|
spring.cloud.azure.storage.fileshare.enabled | benar | Nilai yang menunjukkan apakah layanan Azure File Storage diaktifkan. |
spring.cloud.azure.storage.fileshare.endpoint | URI untuk menyambungkan ke Azure File Storage. | |
spring.cloud.azure.storage.fileshare.account-key | Kunci privat untuk menyambungkan ke Azure File Storage. | |
spring.cloud.azure.storage.fileshare.account-name | Nama akun Berbagi File Azure Storage. |
Penggunaan dasar
Tambahkan properti berikut ke file 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}
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 ResourcePatternResolver
implementasi untuk mencari sumber daya. Gunakan AzureStorageBlobProtocolResolver
untuk mencari blob
sumber daya dan AzureStorageFileProtocolResolver
untuk mencari file
sumber daya.
Untuk pencarian pola,
searchPattern
harus dimulai denganazure-blob://
atauazure-file://
. Misalnya,azure-blob://**/**
berarti untuk mencantumkan semua blob di semua kontainer, danazure-blob://demo-container/**
berarti untuk mencantumkan semua blob dalamdemo-container
kontainer, termasuk sub-folder apa pun.Untuk pencarian lokasi,
searchLocation
harus dimulai denganazure-blob://
atauazure-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 getInputStream()
metode 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 repositori storage-blob-sample dan storage-file-sample di GitHub.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk