Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Проект Spring предоставляет Spring Resources абстракции для доступа к ряду низкоуровневых ресурсов. Проект предоставляет такие интерфейсы, как Resource, ResourceLoader и ResourcePatternResolver. Spring Cloud Azure реализует эти интерфейсы для служб хранилища Azure, что позволяет взаимодействовать с BLOB-объектами хранилища Azure и общей папкой с помощью модели программирования Spring. Spring Cloud Azure предоставляет spring-cloud-azure-starter-storage-blob и spring-cloud-azure-starter-storage-file-share для автоматической настройки BLOB-объектов службы хранилища Azure и общей папки службы хранилища Azure.
В следующей таблице перечислены связанные библиотеки службы хранилища Azure:
| Стартер | Служба | Описание |
|---|---|---|
| spring-cloud-azure-starter-storage-blob | BLOB-объект службы хранилища Azure | Позволяет хранить и получать доступ к неструктурированным данным в большом масштабе в блочных BLOB-объектах. |
| spring-cloud-azure-starter-storage-file-share | Общая папка службы хранилища Azure | Предоставляет полностью управляемые облачные общие папки, к которым можно обращаться в любом месте через стандартный протокол SMB. |
Настройка зависимостей
<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 требуется только при использовании БОЛЬШОго двоичного объекта службы хранилища Azure.
Зависимость spring-cloud-azure-starter-storage-file-share требуется только при использовании общей папки службы хранилища Azure.
Кончик
Мы также предоставляем spring-cloud-azure-starter-storage для поддержки всех функций хранилища. Если вы решили использовать его, spring.cloud.azure.storage.enable является свойством для настройки, а значение по умолчанию — true. Затем можно использовать spring.cloud.azure.storage.<storage-service>.enable для отключения ненужных служб.
Конфигурация
Заметка
Если вы используете субъект безопасности для проверки подлинности и авторизации с помощью идентификатора Microsoft Entra для доступа к ресурсу Azure, убедитесь, что субъект безопасности предоставлен достаточно разрешений для доступа к ресурсу Azure. Дополнительные сведения см. в разделе Авторизация доступа с помощьюидентификатора Microsoft Entra.
В следующей таблице перечислены настраиваемые свойства spring-cloud-azure-starter-storage-blob:
| Свойство | По умолчанию | Описание |
|---|---|---|
| spring.cloud.azure.storage.blob.enabled | истинный | Значение, указывающее, включена ли служба хранилища BLOB-объектов Azure. |
| spring.cloud.azure.storage.blob.endpoint | Универсальный код ресурса (URI) для подключения к хранилищу BLOB-объектов Azure. | |
| spring.cloud.azure.storage.blob.account-key | Закрытый ключ для подключения к хранилищу BLOB-объектов Azure. | |
| spring.cloud.azure.storage.blob.account-name | Имя учетной записи BLOB-объекта службы хранилища Azure. |
В следующей таблице перечислены настраиваемые свойства spring-cloud-azure-starter-storage-file-share:
| Свойство | По умолчанию | Описание |
|---|---|---|
| spring.cloud.azure.storage.fileshare.enabled | истинный | Значение, указывающее, включена ли служба хранилища файлов Azure. |
| spring.cloud.azure.storage.fileshare.endpoint | Универсальный код ресурса (URI) для подключения к хранилищу файлов Azure. | |
| spring.cloud.azure.storage.fileshare.account-key | Закрытый ключ для подключения к хранилищу файлов Azure. | |
| spring.cloud.azure.storage.fileshare.account-name | Имя учетной записи общей папки службы хранилища Azure. |
Базовое использование
Добавьте следующие свойства в файл application.yml:
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}
Получение ресурса
Получение ресурса с помощью @Value
Заметку @Value("azure-blob://[your-container-name]/[your-blob-name]") можно использовать для автоматической отправки ресурса большого двоичного объекта, как показано в следующем примере:
@Value("azure-blob://[your-container-name]/[your-blob-name]")
private Resource storageBlobResource;
Заметку @Value("azure-file://[your-fileshare-name]/[your-file-name]") можно использовать для автоматической отправки ресурса файла, как показано в следующем примере:
@Value("azure-file://[your-fileshare-name]/[your-file-name]")
private Resource storageFileResource;
Получение ресурса с помощью 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]");
Получение ресурсов путем поиска шаблона
Для поиска ресурсов можно использовать класс реализации ResourcePatternResolver. Используйте AzureStorageBlobProtocolResolver для поиска blob ресурсов и AzureStorageFileProtocolResolver для поиска file ресурсов.
Для поиска шаблонов
searchPatternдолжно начинаться сazure-blob://илиazure-file://. Например,azure-blob://**/**означает перечисление всех больших двоичных объектов во всех контейнерах иazure-blob://demo-container/**означает перечисление всех больших двоичных объектов в контейнереdemo-container, включая любую вложенную папку.Для поиска по расположению
searchLocationдолжно начинаться сazure-blob://илиazure-file://, а остальный путь к файлу должен существовать, в противном случае будет создано исключение.
@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");
Обработка с помощью ресурса
Скачивание данных из определенного ресурса
Вы можете скачать ресурс из БОЛЬШОго двоичного объекта службы хранилища Azure или общей папки с помощью метода getInputStream()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();
Отправка данных в конкретный ресурс
Вы можете отправить ресурс в хранилище BLOB-объектов Или файлов Azure, приведения Resource Spring к WritableResource, как показано в следующем примере:
@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());
}
Отправка с несколькими частями
Файлы размером более 4 МиБ будут отправляться в службу хранилища Azure параллельно.
Образцы
На сайте GitHub см.