Share via


Spring Cloud Azure-Ressourcenbehandlung

Dieser Artikel bezieht sich auf: ✔️ Version 4.14.0 ✔️ Version 5.8.0

Das Spring-Projekt bietet eine Spring Resources-Abstraktion für den Zugriff auf eine Reihe von Ressourcen auf niedriger Ebene. Das Projekt stellt Schnittstellen wie Resource, ResourceLoader und ResourcePatternResolver. Spring Cloud Azure implementiert diese Schnittstellen für Azure Storage-Dienste, mit denen Sie mithilfe des Spring-Programmiermodells mit Azure Storage Blob und Dateifreigabe interagieren können. Spring Cloud Azure bietet spring-cloud-azure-starter-storage-blob und spring-cloud-azure-starter-storage-file-share konfiguriert azure Storage Blob und Azure Storage File Share automatisch.

In der folgenden Tabelle sind azure Storage-bezogene Bibliotheken aufgeführt:

Starter Dienst Beschreibung
spring-cloud-azure-starter-storage-blob Azure Storage Blob Ermöglicht für unstrukturierte Daten in großem Umfang die Speicherung und den Zugriff in Blockblobs.
spring-cloud-azure-starter-storage-file-share Azure Storage File Share Verfügt über vollständig verwaltete Clouddateifreigaben, auf die Sie von überall aus mit dem branchenüblichen SMB-Protokoll (Server Message Block) zugreifen können.

Setup von Abhängigkeiten

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

Die spring-cloud-azure-starter-storage-blob Abhängigkeit ist nur erforderlich, wenn Sie Azure Storage Blob verwenden.

Die spring-cloud-azure-starter-storage-file-share Abhängigkeit ist nur erforderlich, wenn Sie azure Storage File Share verwenden.

Tipp

Darüber hinaus unterstützen spring-cloud-azure-starter-storage wir alle Funktionen von Storage. Wenn Sie die Eigenschaft verwenden möchten, spring.cloud.azure.storage.enable ist die Zu konfigurierende Eigenschaft, und der Standardwert ist "true". Anschließend können spring.cloud.azure.storage.<storage-service>.enable Sie nicht benötigte Dienste deaktivieren.

Konfiguration

Hinweis

Wenn Sie einen Sicherheitsprinzipal zum Authentifizieren und Autorisieren mit Microsoft Entra-ID für den Zugriff auf eine Azure-Ressource verwenden, stellen Sie sicher, dass dem Sicherheitsprinzipal ausreichende Berechtigungen für den Zugriff auf die Azure-Ressource erteilt wurden. Weitere Informationen finden Sie unter Autorisieren des Zugriffs mit Microsoft Entra ID.

In der folgenden Tabelle sind die konfigurierbaren Eigenschaften aufgeführt:spring-cloud-azure-starter-storage-blob

Eigenschaft Standard Beschreibung
spring.cloud.azure.storage.blob.enabled true Ein Wert, der angibt, ob ein Azure Blob Storage-Dienst aktiviert ist.
spring.cloud.azure.storage.blob.endpoint Der URI zum Herstellen einer Verbindung mit Azure Blob Storage.
spring.cloud.azure.storage.blob.account-key Der private Schlüssel zum Herstellen einer Verbindung mit Azure Blob Storage.
spring.cloud.azure.storage.blob.account-name Der Name des Azure Storage Blob-Kontos.

In der folgenden Tabelle sind die konfigurierbaren Eigenschaften aufgeführt:spring-cloud-azure-starter-storage-file-share

Eigenschaft Standard Beschreibung
spring.cloud.azure.storage.fileshare.enabled true Ein Wert, der angibt, ob der Azure-Dateispeicherdienst aktiviert ist.
spring.cloud.azure.storage.fileshare.endpoint Der URI zum Herstellen einer Verbindung mit Azure File Storage.
spring.cloud.azure.storage.fileshare.account-key Der private Schlüssel zum Herstellen einer Verbindung mit Azure File Storage.
spring.cloud.azure.storage.fileshare.account-name Der Name des Azure Storage File Share-Kontos.

Grundlegende Verwendung

Fügen Sie der Datei application.yml die folgenden Eigenschaften hinzu:

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}

Abrufen einer Ressource

Abrufen einer Ressource mit @Value

Sie können die Anmerkung @Value("azure-blob://[your-container-name]/[your-blob-name]") verwenden, um eine BLOB-Ressource zu automatisch zu verkabeln, wie im folgenden Beispiel gezeigt:

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

Sie können die Anmerkung @Value("azure-file://[your-fileshare-name]/[your-file-name]") verwenden, um eine Dateiressource zu automatisch zu verkabeln, wie im folgenden Beispiel gezeigt:

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

Abrufen einer Ressource mit 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]");

Abrufen von Ressourcen nach Mustern

Sie können eine Implementierungsklasse von zum Durchsuchen von ResourcePatternResolver Ressourcen verwenden. Wird AzureStorageBlobProtocolResolver verwendet, um Ressourcen zu durchsuchen blob und AzureStorageFileProtocolResolver Ressourcen zu durchsuchen file .

  • Bei der Mustersuche sollte die searchPattern Suche beginnen mit azure-blob:// oder azure-file://. Bedeutet beispielsweise, azure-blob://**/** alle Blobs in allen Containern auflisten und azure-blob://demo-container/** bedeutet, alle Blobs im demo-container Container, einschließlich aller Unterordner, auflisten zu können.

  • Bei der Speicherortsuche sollte die searchLocation Dateisuche mit azure-blob:// oder mit dem azure-file:// Standard erneuten Dateipfad beginnen, andernfalls wird eine Ausnahme ausgelöst.

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

Umgang mit Ressource

Herunterladen von Daten aus einer bestimmten Ressource

Sie können eine Ressource aus Azure Storage Blob oder Dateifreigabe mit der getInputStream() Methode von 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();

Hochladen von Daten in bestimmte Ressourcen

Sie können eine Ressource in Azure Blob oder Dateispeicher hochladen, indem Sie das Spring-Element Resource in WritableResourcedas folgende Beispiel umwandeln:

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

Mehrteiliger Upload

Dateien, die größer als 4 MiB sind, werden parallel in Azure Storage hochgeladen.

Beispiele

Sehen Sie sich die Repositorys "storage-blob-sample " und "storage-file"-Repositorys auf GitHub an.