1. Создать проект с помощью SpringBoot Starter

Используйте https://start.spring.io и создайте проект. Загрузите архив и извлеките его в свою локальную папку. Шаги хорошо документированы. Открытие проекта с помощью Intellij или Eclipse также хорошо документировано на средних сайтах и ​​на этих домашних страницах IDE. Мы рассмотрим код, чтобы получить нашу разработку Project Reactor с использованием реактивной базы данных. У нас есть варианты

  1. Контроллеры Reactor и императивный или классический/нереактивный Srping Services/уровень DAO (гибридная модель)
  2. Контроллеры Reactor и репозиторий Reactive Spring
  3. Реактивные контроллеры и репозиторий Reactive Spring с асинхронными/потоковыми базами данных, совместимыми с nosql, такими как Mongo (где агрегация и проекции являются родными и асинхронными для него)

Мы будем использовать вариант 3 end to End — реактивный

\Возможно, я забыл включить часть программного обеспечения, которое будет использоваться в этой статье:

  1. IntelliJ — моя IDE для Java. Другие могут быть использованы, но процесс, который я покажу, в основном для IntelliJ. Я опытный пользователь Eclipse/STS, который отлично работает. Вы также можете использовать это
  2. Я опытный пользователь Eclipse/STS, который отлично работает. Вы также можете использовать это
  3. Почтальон — используется для тестирования API

А вот и IntelliJ, IDE, которую мы будем использовать для нашей разработки. Мы откроем наш ранее извлеченный проект в IntelliJ.

В Java есть несколько менеджеров пакетов, среди которых выделяются Maven и Gradle.

  • Maven — это стандартный менеджер пакетов для Java.
  • Gradle — Gradle новее, чем Maven, а также имеет более быстрое время сборки. Это очень здорово, и вы должны использовать, чтобы увидеть это. Я буду использовать это для реактивных микросервисов Spring в этом посте.

Для проекта мы выберемMaven. Стартовый проект был создан с использованием Maven. Он имеет все основные зависимости. Давайте обеспечим следующие зависимости или просто добавим их, если их нет. Примечание Spring Boot Starter Wizard дает возможность добавить их, и это очень красиво. Однако многие разработчики жили до SpringBoot и используют maven для настройки pom.xml.

  1. Настроить зависимости

Во время проекта Starter мы добавили бы зависимость для реактивных тестов mongo, junit, jupiter и плагинов. Убедитесь, что как минимум следующие

Структура проекта

Благодаря SpringBoot мы можем распаковать архив и импортировать наш проект в IntelliJ как ярлык. В противном случае вы можете создать проект maven из архетипа и использовать время для настройки.

Это будет выглядеть

Запустите сервер NOSQL MONGODB

Создание реактивного контроллера для лаборатории

Добавьте аннотации RestController, RequestMapping

CrossOrigin — добавьте, чтобы ваши разработчики пользовательского интерфейса могли позвонить и продолжить разработку. Безопасность может быть решена в не-dev и его конфигурациях и некоторых аннотациях. Мы сосредоточимся на бизнес-варианте использования для создания Rest API, который нужен нашей команде, пользовательскому интерфейсу и серверной части. Пожалуйста, ознакомьтесь с другими моими сообщениями о безопасности и Redis.

Убедитесь, что добавлены методы

чтобы получить все лаборатории, одну лабораторию и удалить лабораторию, как показано ниже. Вы можете называть методы как хотите. Использовали свой IDE-Refractor, и вы видите, что это кусок пирога. Мы хотим, чтобы суть кода была упрощена для нашей аудитории.

Создайте реактивный контроллер, как показано. Чтобы сделать его RestController, позаимствуйте Spring Annotation RestController. Чтобы Router сопоставил его, позаимствуйте еще одну аннотацию RequestMapping. Также мы не хотим, чтобы наши Frontend-разработчики разочаровались, в то время как интеграция нашего API в разработку позволяет добавить еще одну аннотацию CrossOrigin, и они будут счастливы. В верхнем окружении команда сборки и выпуска может переопределить это и обеспечить безопасность, и мы добавим аутентификацию и авторизацию.

Создание реактивного репозитория

Во время архитектуры и дизайна у нас будет много вариантов. Для этого мы будем использовать архитектуру Spring из Project Reactor, используя готовый к использованию встроенный реактивный репозиторий.

Репозиторий Reactive с нуля будет сложной задачей и большим количеством кода. Благодаря Spring Reactor мы можем использовать ReactiveCrudRepository. Ему нужны POJO или Type вместе с ключом, поэтому параметры Lab, String в Generic были добавлены ReactiveCrudRepository‹Lab, String›, как показано ниже.

Создать реактивную модель

Мы создаем POJO. Spring любит жизненный цикл POJO и DI вокруг него для преобразования в bean-компонент, всемирно известный и дань уважения архитекторам Spring, разработчикам платформ и сообществу Spring, разработчикам Spring.

Мы будем использовать POJO без добавления другой библиотеки, чтобы это выглядело очень просто.

Давайте пропатчим, чтобы Reactor мог его потреблять. Добавьте аннотацию к документу. Под капотом Spring bean-компоненты и сериализаторы/десериализаторы вступают в действие, так что документы mongo могут быть преобразованы в этот bean-компонент, а Spring может сохраняться и выполнять CRUD для этого.

Запустить проект

вот и красота. SpringBoot Предоставьте вызов с аннотацией @SpringBootApplication . Он имеет основной метод. Просто настройте этот основной класс, и мы увидим, что SpringBoot работает на порту 8080 по умолчанию. Мы можем настроить их, используя предоставленную нам конфигурацию Spring, и мы сделаем это в другом посте или обратимся к SpringBoot Docs.

Вызов реактивных микросервисов

Давайте используем postman для вызова REST API. Мы можем получить больше удовольствия, используя наш реактивный оркестратор формы микросервисов (еще один проект Spring, который мы можем создать. Давайте отложим его, и мы можем рассмотреть его в другом посте, или они хорошо документированы в Spring — для использования Reactive REST API)

Список всех документов в коллекции Mongo:

Используя наш List/Get REST API. Также см. получение определенного документа с помощью Get API.

Создайте документ в Mongo, используя нашу операцию создания

Проверьте их в NoSQL — Mongo

Подключиться как клиент Mongo. используйте Mongo Shell и запросите, как мы видим

Запустить клиент Mongo

Запустите консоль/оболочку Mongo и запрос

Выводы

И вот оно. Мы получили Reactive REST API для Spring Boot, который подключается к нашей реактивной базе данных — No SQL. Микросервис можно развернуть, настроив свойства yaml/SpringBoot и изменив конфигурации. Добавьте Actuator, Hysterix, Caching и создайте модуль multi pom для разделения контроллера, служб и dao. Вот некоторые из пунктов о том, как создать REST API. Далее мы научимся создавать реактивные микросервисы с использованием Vertx. Я реализовал множество сервисов Vertx во время работы над различными проектами и настроил их в CI/CD-Production с использованием Jenkins и Custom Pipelines. Эти службы Vertx были настроены и реализованы с аутентификацией с использованием токена, шифрованием полей из белого списка.