Spring Cloud Azure kaynak işleme
Bu makale şunlar için geçerlidir: ✔️ Sürüm 4.14.0 ✔️ Sürüm 5.8.0
Spring projesi, bir dizi alt düzey kaynağa erişmek için bir Spring Resources soyutlaması sağlar. Proje, ResourceLoader
ve ResourcePatternResolver
gibi Resource
arabirimler sağlar. Spring Cloud Azure, Azure Depolama hizmetleri için bu arabirimleri uygulayarak Spring programlama modelini kullanarak Azure depolama Blobu ve Dosya Paylaşımı ile etkileşim kurmanızı sağlar. Spring Cloud Azure, Azure Depolama Blob ve spring-cloud-azure-starter-storage-file-share
Azure Depolama Dosya Paylaşımı'nı otomatik olarak yapılandırma ve sağlarspring-cloud-azure-starter-storage-blob
.
Aşağıdaki tabloda Azure Depolama ilgili kitaplıklar listeleniyor:
Başlangıç | Hizmet | Açıklama |
---|---|---|
spring-cloud-azure-starter-storage-blob | Azure Depolama Blobu | Yapılandırılmamış verilerin blok bloblarında büyük ölçekte depolanmasına ve erişilmesine izin verir. |
spring-cloud-azure-starter-storage-file-share | Azure Depolama Dosya Paylaşımı | Endüstri standardı Sunucu İleti Bloğu (SMB) protokolü aracılığıyla her yerden erişebileceğiniz tam olarak yönetilen bulut dosya paylaşımları sunar. |
Bağımlılık kurulumu
<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>
spring-cloud-azure-starter-storage-blob
Bağımlılık yalnızca Azure Depolama Blob'unu kullanırken gereklidir.
spring-cloud-azure-starter-storage-file-share
Bağımlılık yalnızca Azure Depolama Dosya Paylaşımı'nı kullanırken gereklidir.
Bahşiş
Ayrıca Depolama tüm özelliklerini desteklemek için sağlarızspring-cloud-azure-starter-storage
. Kullanmayı seçerseniz, spring.cloud.azure.storage.enable
yapılandırılan özelliktir ve varsayılan değer true olur. Ardından, gereksiz hizmetleri devre dışı bırakmak için komutunu kullanabilirsiniz spring.cloud.azure.storage.<storage-service>.enable
.
Yapılandırma
Dekont
Azure kaynağına erişim için Microsoft Entra ID ile kimlik doğrulaması yapmak ve yetkilendirmek için bir güvenlik sorumlusu kullanıyorsanız güvenlik sorumlusuna Azure kaynağına erişmek için yeterli izin verildiğinden emin olun. Daha fazla bilgi için bkz . Microsoft Entra Id ile erişimi yetkilendirme.
Aşağıdaki tabloda, öğesinin yapılandırılabilir özellikleri spring-cloud-azure-starter-storage-blob
listelenir:
Özellik | Varsayılan | Açıklama |
---|---|---|
spring.cloud.azure.storage.blob.enabled | true | bir Azure Blob Depolama hizmetinin etkinleştirilip etkinleştirilmediğini gösteren değer. |
spring.cloud.azure.storage.blob.endpoint | Azure Blob Depolama bağlanmak için URI. | |
spring.cloud.azure.storage.blob.account-key | Azure Blob Depolama bağlanmak için özel anahtar. | |
spring.cloud.azure.storage.blob.account-name | Azure Depolama Blob hesabı adı. |
Aşağıdaki tabloda, öğesinin yapılandırılabilir özellikleri spring-cloud-azure-starter-storage-file-share
listelenir:
Özellik | Varsayılan | Açıklama |
---|---|---|
spring.cloud.azure.storage.fileshare.enabled | true | Azure Dosya Depolama hizmetinin etkinleştirilip etkinleştirilmediğini gösteren değer. |
spring.cloud.azure.storage.fileshare.endpoint | Azure Dosya Depolama bağlanmak için URI. | |
spring.cloud.azure.storage.fileshare.account-key | Azure Dosya Depolama bağlanmak için özel anahtar. | |
spring.cloud.azure.storage.fileshare.account-name | Azure Depolama Dosya Paylaşımı hesap adı. |
Temel kullanım
Application.yml dosyanıza aşağıdaki özellikleri ekleyin:
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}
Kaynak alma
ile kaynak alma @Value
Aşağıdaki örnekte gösterildiği gibi bir blob kaynağını otomatik olarak bağlamak için ek açıklamasını @Value("azure-blob://[your-container-name]/[your-blob-name]")
kullanabilirsiniz:
@Value("azure-blob://[your-container-name]/[your-blob-name]")
private Resource storageBlobResource;
Ek açıklamasını @Value("azure-file://[your-fileshare-name]/[your-file-name]")
, aşağıdaki örnekte gösterildiği gibi bir dosya kaynağını otomatik olarak bağlamak için kullanabilirsiniz:
@Value("azure-file://[your-fileshare-name]/[your-file-name]")
private Resource storageFileResource;
ResourceLoader ile kaynak alma
@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]");
Deseni arayarak kaynakları alma
Kaynak aramak için uygulama sınıfını ResourcePatternResolver
kullanabilirsiniz. Kaynakları aramak ve AzureStorageFileProtocolResolver
kaynakları aramak file
için kullanınAzureStorageBlobProtocolResolver
.blob
Desen araması için veya
searchPattern
azure-file://
ileazure-blob://
başlamalıdır. Örneğin,azure-blob://**/**
tüm kapsayıcılardaki tüm blobları listeleme veazure-blob://demo-container/**
herhangi bir alt klasör de dahil olmak üzere kapsayıcıdakidemo-container
tüm blobları listeleme anlamına gelir.Konum araması için veya
searchLocation
ileazure-blob://
azure-file://
başlamalıdır ve kalan dosya yolu bulunmalıdır, aksi takdirde bir özel durum oluşturulur.
@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");
Kaynakla işleme
Belirli bir kaynaktan veri indirme
Azure Depolama Blob'dan veya Dosya Paylaşımı'ndan yöntemini Resource
kullanarak getInputStream()
bir kaynak indirebilirsiniz.
@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();
Verileri belirli bir kaynağa yükleme
Aşağıdaki örnekte gösterildiği gibi Spring'i Resource
öğesine dönüştürerek Azure Blob'a WritableResource
veya dosya depolamaya bir kaynağa yükleyebilirsiniz:
@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());
}
Çok parçalı karşıya yükleme
4 MiB'den büyük dosyalar paralel olarak Azure Depolama'a yüklenir.
Örnekler
GitHub'da storage-blob-sample ve storage-file-sample depolarına bakın.