Spring Cloud Azure-Ressourcenbehandlung
Dieser Artikel gilt für:✅ Version 4.19.0 ✅ Version 5.19.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
bereit. 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
zum automatischen Konfigurieren von Azure Storage Blob und Azure Storage File Share.
In der folgenden Tabelle sind azure Storage-bezogene Bibliotheken aufgeführt:
Anlasser | Dienst | Beschreibung |
---|---|---|
spring-cloud-azure-starter-storage-blob | Azure Storage Blob | Ermöglicht die Speicherung und den Zugriff auf unstrukturierte Daten in Block-Blobs in großem Maßstab. |
spring-cloud-azure-starter-storage-file-share | Azure Storage File Share | Bietet vollständig verwaltete Cloud-Dateifreigaben, auf die Sie über das Branchenstandardprotokoll Server Message Block (SMB) von praktisch überall aus 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.
Trinkgeld
Wir bieten auch spring-cloud-azure-starter-storage
, um alle Features von Storage zu unterstützen. Wenn Sie die Eigenschaft verwenden, ist spring.cloud.azure.storage.enable
die zu konfigurierende Eigenschaft, und der Standardwert ist true. Anschließend können Sie spring.cloud.azure.storage.<storage-service>.enable
verwenden, um nicht benötigte Dienste zu deaktivieren.
Konfiguration
Anmerkung
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 von spring-cloud-azure-starter-storage-blob
aufgeführt:
Eigentum | Vorgabe | Beschreibung |
---|---|---|
spring.cloud.azure.storage.blob.enabled | STIMMT | 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 von spring-cloud-azure-starter-storage-file-share
aufgeführt:
Eigentum | Vorgabe | Beschreibung |
---|---|---|
spring.cloud.azure.storage.fileshare.enabled | STIMMT | 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 Nutzung
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 von @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 von @Value("azure-file://[your-fileshare-name]/[your-file-name]")
verwenden, um eine Dateiressource 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 ResourcePatternResolver
verwenden, um Ressourcen zu durchsuchen. Verwenden Sie AzureStorageBlobProtocolResolver
, um blob
Ressourcen zu durchsuchen und AzureStorageFileProtocolResolver
, um file
Ressourcen zu durchsuchen.
Bei der Mustersuche sollte die
searchPattern
mitazure-blob://
oderazure-file://
beginnen. Beispielsweise bedeutetazure-blob://**/**
, alle Blobs in allen Containern auflisten zu können, undazure-blob://demo-container/**
bedeutet, alle Blobs im containerdemo-container
, einschließlich aller Unterordner, auflisten zu können.Bei der Speicherortsuche sollte der
searchLocation
mitazure-blob://
oderazure-file://
beginnen und der verbleibende Dateipfad vorhanden sein, 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
herunterladen.
@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 Resource
in WritableResource
umwandeln, wie im folgenden Beispiel gezeigt:
@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.
Proben
Sehen Sie sich das storage-blob-sample- und Speicherdatei-Beispiel-Repositorys auf GitHub an.