SC24EP07 Разработка реактивных REST-сервисов - Разработка проектов со Spring

Поделиться
HTML-код
  • Опубликовано: 26 сен 2024
  • Седьмой ролик цикла посвящён разработке реактивных REST-сервисов на основе Spring WebFlux и Project Reactor.
    В цикле роликов "Разработка проектов со Spring" я рассказываю на простых примерах о процессе разработки веб-приложений и REST-сервисов на языке программирования Java с использованием экосистемы Spring. Данный цикл охватывает разработку классических и реактивных проектов, вопросы их сопровождения, такие как документация и мониторинг, адаптацию их к облачной инфраструктуре и процесс их развёртывания в Docker и Kubernetes.
    Репозиторий проекта: github.com/ale...
    Мои ресурсы:
    - Сайт: alexkosarev.name
    - Канал на RUclips: / @shurik_codes
    - Канал в Telegram: t.me/+TZCuO38v...
    - Группа для обсуждений в Telegram: t.me/+UFAkw187...
    - Паблик в VK: shurik....
    - Канал в Дзене: dzen.ru/shurik...
    - Канал на Rutube: rutube.ru/chan...
    - Страница в Boosty: boosty.to/akos...
    Поддержать проект:
    - Доны в VK: donut/s...
    - Донаты в Boosty: boosty.to/akos...
    - Через Tinkoff: www.tinkoff.ru...
    #java #spring #reactive #webflux #rest #howto

Комментарии • 25

  • @denisthestudent
    @denisthestudent 3 месяца назад +1

    Спасибо за отличный урок!

  • @hurricane-rus
    @hurricane-rus 3 месяца назад +1

    В конце прямо трудовое видео)
    Чтобы в WebClientProductReviewsClient избавиться от кастования к List, как вариант можно выкинуть ProblemDetail и его getProperties(), который возвращает Object.
    И написать примерно такое:
    .onErrorMap(WebClientResponseException.BadRequest.class, ex -> {
    try {
    ObjectMapper mapper = new ObjectMapper();
    JsonNode root = mapper.readTree(ex.getResponseBodyAsString());
    JsonNode errorsNode = root.path("errors");
    List errors = mapper.convertValue(errorsNode, new TypeReference() { });
    return new ClientBadRequestException(ex, errors);
    } catch (Exception e) {
    return new ClientBadRequestException(ex, Collections.emptyList());
    }
    });

  • @ровойт
    @ровойт 6 месяцев назад +1

    очень интересно побольше бы такого

  • @АлександрТяпкин-п2ц
    @АлександрТяпкин-п2ц 6 месяцев назад +2

    Хорошая тема. Загружен на работе, не успеваю за тезкой. Наверстаю обязательно.

  • @АлмазХаннанов-й4и
    @АлмазХаннанов-й4и 6 месяцев назад +4

    Как ни странно, я нулевой))) Лайк поставил, а счетчик остался "0"

  • @emrahhakan5462
    @emrahhakan5462 2 месяца назад +1

    ❤❤❤

  • @АлександраДунаф
    @АлександраДунаф Месяц назад

    Добрый день! Подскажите, пожалуйста, для чего в pom.xml в зависимостях lombok true

    • @shurik_codes
      @shurik_codes  9 дней назад

      Чтобы он не был транзитивной зависимостью, подбробнее тут: github.com/projectlombok/lombok/issues/1629#issuecomment-376005025

  • @kojik5043
    @kojik5043 6 месяцев назад +2

    А где название что за sc24ep07??

  • @Дамир-з6у
    @Дамир-з6у 6 месяцев назад

    Как понять в каких ситуациях лучше выбрать ResponseEntity, а в каких Mono?

    • @shurik_codes
      @shurik_codes  6 месяцев назад +1

      На мой взгляд правильнее использовать Mono, чтобы цепочка вызовов была в виде одного стрима

  • @victorgelement5997
    @victorgelement5997 6 месяцев назад +1

    Поправь название ролика пожалуйста

  • @nafis9908
    @nafis9908 6 месяцев назад

    А где можно получить лицензию на intellij idea из россии?

    • @BarmaleySPb
      @BarmaleySPb 6 месяцев назад

      в google

    • @shurik_codes
      @shurik_codes  6 месяцев назад

      От товарища с иностранной Visa)

  • @Leon-do8tf
    @Leon-do8tf 5 месяцев назад

    28:09 Есть ли разница в использовании @ControllerAdvice и @RestControllerAdvice? Почему не RestControllerAdvice?

    • @shurik_codes
      @shurik_codes  5 месяцев назад

      По сути @RestControllerAdvice - @ControllerAdvice + @ResponseBody, @ControllerAdvice использовал, т.к. привычнее

    • @Leon-do8tf
      @Leon-do8tf 5 месяцев назад

      @@shurik_codes Ага вспомнил) Спасибо

  • @svyatoiambrozii
    @svyatoiambrozii 4 месяца назад +1

    Здравствуйте! А можно ли вообще вместо webclient при создании подобных сервисов использовать одну бд, напрмер один сервис загружает данные будучи нереактивным, а второй сервис с реактивным драйвером бд только считывает их?

    • @shurik_codes
      @shurik_codes  4 месяца назад +3

      По сути никто и ничто не мешает так делать (работать с одной БД из разных сервисах), но это нарушает концепцию микросервисной архитектуры, где каждый микросервис имеет свою базу данных. Это, кстати, имеет свои достоинства - если в структуре БД что-то меняется, то эти изменения зачастую спровоцируют изменения только только в соответствующем микросервисе.

    • @svyatoiambrozii
      @svyatoiambrozii 4 месяца назад +1

      @@shurik_codes Спасибо за разъяснение!. А вообще обращения по вебклиенту не замедляет работу в сравнении с прямым обращением к единой бд?

    • @shurik_codes
      @shurik_codes  4 месяца назад +1

      @@svyatoiambrozii ну, это однозначно медленнее, чем напрямую к БД обращаться, но не критично

  • @ГенрихАвдеев-ь9з
    @ГенрихАвдеев-ь9з 5 месяцев назад +1

    @shurik_codes Привет, насчет дефолтного значения в радиобатонах - нужно добавить checked в одном из них, например:
    5

  • @TheUnmers
    @TheUnmers 2 месяца назад +1

    Уроки просто огонь, спасибо за титанический труд!