Firebase предоставляет мощную, простую и экономичную службу облачного хранилища объектов. Кроме того, Firebase SDK добавляет безопасность Google для загрузки и скачивания файлов. SDK можно использовать для хранения изображений, файлов, видео и другого пользовательского контента.

В этой статье делается попытка достичь следующего:

  • Используйте хранилище Firebase для загрузки и скачивания файлов на существующий сервер весенней загрузки, развернутый на Heroku.
  • Внешняя настройка учетной записи службы Firebase.

В моей предыдущей статье шаблон проектирования стратегии использовался для разработки приложения с весенней загрузкой, которое выгружает и скачивает файлы, используя либо локальное файловое хранилище, либо реализацию хранилища AWS, в зависимости от указанного профиля (разработка или производство).

Базовый код, содержащийся в этом репозитории, имеет контракт на хранение файлов для загрузки и выгрузки файлов, представленных абстрактным классом.

В этой статье будет показано, как интегрировать хранилище Firebase с существующим приложением весенней загрузки.

Реализация

Реализация хранилища Firebase включает следующие шаги:

  1. Настройте проект Firebase.
  2. Добавьте на сервер Firebase Admin SDK.
  3. Добавить реализацию стратегии Firebase Storage.

Давайте подробно рассмотрим каждый шаг ...

  1. Настроить проект Firebase

Чтобы использовать Firebase, вам необходимо создать проект Firebase из консоли разработчиков Firebase, которую вы можете найти здесь. Следуйте указаниям мастера настройки проекта, чтобы создать новый проект.

После создания проекта перейдите к настройкам проекта в консоли firebase и на вкладке учетной записи службы нажмите «Создать новый закрытый ключ», чтобы сгенерировать новый закрытый ключ, который содержится в файле конфигурации JSON.

Файл конфигурации - это файл JSON, содержащий ключи безопасности, с помощью которых сервер программно аутентифицируется в хранилище Firebase с помощью единого пакета Admin SDK.

2. Добавьте Firebase Admin SDK.

Firebase Admin SDK используется для взаимодействия с Firebase из привилегированной среды для выполнения загрузки и скачивания файлов в реальном времени среди других функций, как указано в документации.

Кроме того, для использования SDK администратора Firebase необходимо следующее:

  • Проект Firebase, который вы создали на шаге 1.
  • Файл конфигурации с учетными данными учетной записи службы, которые вы получили на шаге 1.

Приступите к добавлению зависимости maven SDK администратора Firebase к серверу весенней загрузки:

<dependency>
  <groupId>com.google.firebase</groupId>
  <artifactId>firebase-admin</artifactId>
  <version>6.14.0</version>
</dependency>

Следующим шагом является инициализация Admin SDK в приложении, которое позволяет использовать хранилище Firebase.

Обратите внимание, что имя сегмента и идентификатор проекта можно получить из файла конфигурации.

Из приведенного выше обратите внимание, что был добавлен путь к файлу конфигурации учетной записи службы. Это, конечно, не лучший способ, поскольку вы не хотите, чтобы файл был передан в систему управления версиями. Это будет рассмотрено в следующем разделе.

3. Добавьте стратегию хранения Firebase.

Создайте класс, который расширяет существующую стратегию хранения и обеспечивает реализацию хранилища firebase для загрузки и скачивания.

Метод загрузки принимает составной файл, создает объект BlobInfo перед загрузкой файла в хранилище Firebase, как показано ниже.

Чтобы загрузить файл, передайте имя загруженного файла в службу хранилища firebase, которая возвращает объект Blob после того, как файл будет найден.

Класс FirebaseStorageStrategy можно увидеть ниже.

Развертывание на Heroku

Развертывание приложения в Heroku не удастся, потому что Heroku не поддерживает файловую систему, поэтому файл конфигурации учетной записи службы не может быть использован. Кроме того, вы не захотите фиксировать файл конфигурации в системе управления версиями.

Как это исправить?

Предложенное решение

Следующие шаги можно предпринять для инициализации SDK в коде без чтения из файла.

  1. Создайте переменные среды для хранения значений, содержащихся в файле конфигурации учетной записи службы. Такая же переменная среды должна быть создана на Heroku как часть переменных конфигурации.

Из структуры JSON выше создайте переменные среды для хранения значений.

2. Создайте класс для хранения содержимого файла конфигурации учетной записи службы.

3. Установите значения переменных среды из шага 1 в поля класса из шага 2.

4. Сериализуйте созданный объект из шага 3 в строку JSON с помощью Джексона.

5. Преобразуйте сериализованную строку JSON во входной поток.

6. Наконец, инициализируйте SDK с объектом входного потока из шага 5.

Модифицированный класс FirebaseStorageStrategy можно увидеть ниже.

Заключение

Из объясненного варианта использования видно, что довольно легко интегрировать хранилище Firebase с загрузкой Spring и развернуть его в Heroku с помощью внешнего файла конфигурации.

Большое спасибо Фрэнку Акогуну из группы пользователей Java в Лагосе за его ценные идеи.

Вы можете найти исходный код в репозитории ниже.



Спасибо за чтение 😊

Дополнительные ресурсы