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 ResourcePatternResolvergibi Resourcearabirimler 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-bloblistelenir:

Ö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-sharelistelenir:

Ö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 searchPatternazure-file://ile azure-blob:// başlamalıdır. Örneğin, azure-blob://**/** tüm kapsayıcılardaki tüm blobları listeleme ve azure-blob://demo-container/** herhangi bir alt klasör de dahil olmak üzere kapsayıcıdaki demo-container tüm blobları listeleme anlamına gelir.

  • Konum araması için veya searchLocation ile azure-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 Resourcekullanarak 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 WritableResourceveya 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.