Aracılığıyla paylaş


Spring Cloud Azure kaynak işleme

Spring projesi, bir dizi alt düzey kaynağa erişmek için bir Spring Resources soyutlama sağlar. Proje, Resource, ResourceLoader ve ResourcePatternResolvergibi 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 Blobu ve Azure Depolama Dosya Paylaşımı'nı otomatik olarak yapılandırmak için spring-cloud-azure-starter-storage-blob ve spring-cloud-azure-starter-storage-file-share sağlar.

Aşağıdaki tabloda Azure Depolama ile ilgili kitaplıklar listeleniyor:

Meze 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ığı yalnızca Azure Depolama Blobu kullanırken gereklidir.

spring-cloud-azure-starter-storage-file-share bağımlılığı yalnızca Azure Depolama Dosya Paylaşımı'nı kullanırken gereklidir.

Bahşiş

Ayrıca Depolama'nın tüm özelliklerini desteklemek için spring-cloud-azure-starter-storage sağlarız. Kullanmayı seçerseniz, spring.cloud.azure.storage.enable yapılandırılan özelliktir ve varsayılan değer true. Daha sonra gereksiz hizmetleri devre dışı bırakmak için spring.cloud.azure.storage.<storage-service>.enable kullanabilirsiniz.

Konfigürasyon

Not

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 spring-cloud-azure-starter-storage-blobyapılandırılabilir özellikleri listelenir:

Mülk Temerrüt Açıklama
spring.cloud.azure.storage.blob.enabled doğru Azure Blob Depolama hizmetinin etkinleştirilip etkinleştirilmediğini gösteren değer.
spring.cloud.azure.storage.blob.endpoint Azure Blob Depolama'ya bağlanmak için URI.
spring.cloud.azure.storage.blob.account-key Azure Blob Depolama'ya bağlanmak için özel anahtar.
spring.cloud.azure.storage.blob.account-name Azure Depolama Blobu hesap adı.

Aşağıdaki tabloda spring-cloud-azure-starter-storage-file-shareyapılandırılabilir özellikleri listelenir:

Mülk Temerrüt Açıklama
spring.cloud.azure.storage.fileshare.enabled doğru Azure Dosya Depolama hizmetinin etkinleştirilip etkinleştirilmediğini gösteren değer.
spring.cloud.azure.storage.fileshare.endpoint Azure Dosya Depolama'ya bağlanmak için URI.
spring.cloud.azure.storage.fileshare.account-key Azure Dosya Depolama'ya 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

@Value ile kaynak alma

Aşağıdaki örnekte gösterildiği gibi blob kaynağını otomatik olarak bağlamak için @Value("azure-blob://[your-container-name]/[your-blob-name]") ek açıklamasını kullanabilirsiniz:

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

Aşağıdaki örnekte gösterildiği gibi, bir dosya kaynağını otomatik olarak bağlamak için @Value("azure-file://[your-fileshare-name]/[your-file-name]") ek açıklamasını 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

Kaynakları aramak için ResourcePatternResolver uygulama sınıfını kullanabilirsiniz. AzureStorageBlobProtocolResolver kaynakları aramak için blob ve AzureStorageFileProtocolResolver kaynakları aramak için file kullanın.

  • Desen araması için searchPatternazure-blob:// veya azure-file://ile başlamalıdır. Örneğin, azure-blob://**/** tüm kapsayıcılardaki tüm blobları listelemek ve azure-blob://demo-container/**demo-container kapsayıcıdaki tüm blobları listelemek anlamına gelir ve herhangi bir alt klasör de dahil olmak üzere.

  • Konum araması için, searchLocationazure-blob:// veya azure-file:// ile 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 Blobu'ndan veya Dosya Paylaşımı'ndan getInputStream()Resource yöntemiyle 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 ResourceWritableResourceolarak yayınlayarak bir kaynağa Azure Blob'a veya dosya depolamaya 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'ya yüklenir.

Örnekleri

GitHub'da storage-blob-sample ve storage-file-sample depolarına bakın.