Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Проект 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 см.