SC24EP06 Разработка реактивного веб-приложения - Разработка проектов со Spring

Поділитися
Вставка
  • Опубліковано 17 бер 2024
  • В шестом ролике серии я снова возвращаюсь к теме разработки веб-приложений, но на этот раз речь пойдёт о реактивных веб-приложениях на основе Spring WebFlux и Project Reactor. Попутно будут задеты темы применения инструментов интернационализации, Thymeleaf, а так же Jakarta Bean Validation, включая нюансы применения последней в реактивных веб-приложениях.
    В цикле роликов "Разработка проектов со Spring" я рассказываю на простых примерах о процессе разработки веб-приложений и REST-сервисов на языке программирования Java с использованием экосистемы Spring. Данный цикл охватывает разработку классических и реактивных проектов, вопросы их сопровождения, такие как документация и мониторинг, адаптацию их к облачной инфраструктуре и процесс их развёртывания в Docker и Kubernetes.
    Репозиторий проекта: github.com/alex-kosarev/sc24
    #java #spring #web #webflux #reactive #reactor #howto
    Мои ресурсы:
    - Сайт: alexkosarev.name
    - Канал на UA-cam: / @shurik_codes
    - Канал в Telegram: t.me/+TZCuO38vG3oqu_Jq
    - Группа для обсуждений в Telegram: t.me/+UFAkw187WstX0wqy
    - Паблик в VK: shurik.codes
    - Канал в Дзене: dzen.ru/shurik_codes
    - Канал на Rutube: rutube.ru/channel/24432001/
    - Страница в Boosty: boosty.to/akosarev
    Поддержать проект:
    - Доны в VK: donut/shurik.codes
    - Донаты в Boosty: boosty.to/akosarev/donate
    - Через Tinkoff: www.tinkoff.ru/cf/4PEOiVCZQuS

КОМЕНТАРІ • 39

  • @denisthestudent
    @denisthestudent 8 днів тому +1

    Спасибо, узнал много нового

  • @seranzin4473
    @seranzin4473 2 місяці тому +7

    Автор, я в шоке от твоих видео, очень высокое качество, куда лучше чем примеры из документаций, надеюсь и дальше получать уведомления о новом видео :)

  • @user-ss4nl3zb8v
    @user-ss4nl3zb8v 2 місяці тому +5

    Про flux прямо то, что ждал

  • @ivandevon6865
    @ivandevon6865 2 місяці тому +1

    отличный контент, очень полезно, вы Учитель, с большой буквы!

  • @dmaberlin
    @dmaberlin 3 години тому

    Favorite and favourite mean the same thing. However, the spelling varies depending on whether you're using UK or US English: In US English, “favorite” (no “u”) is standard. In UK English, “favourite” (with a “u”) is correct.

  • @enovoselov
    @enovoselov 2 місяці тому +1

    Спасибо за полезный материал!

  • @denwerxampp4035
    @denwerxampp4035 2 місяці тому +1

    круто, хороший план)

  • @user-br4gt7xu2j
    @user-br4gt7xu2j 2 місяці тому +2

    Очень крутой видос, много полезной инфы, но не совсем понятны три момента:
    1) для получения списка избранного мы вытягиваем из стороннего сервиса ВСЕ товары, после чего только фильтруем, разве так делают? можно как-будто сразу запрашивать список товаров по готовому у нас списку идентификаторов, разве нет?
    2) при отправке отзыва мы осуществляем повторные запросы за данными по товару и по избванному. Для чего это? Почему не использовать готовые данные, мы ведь их уже запросили и получили.
    3) зачем при запросе страницы товара мы тащим из таблички избранного его сущность, чтобы потом передавать константный флаг в модель? почему просто не запросить из БД этот флаг (наличие или отсутствие такой сущности), тем самым избежав лишних преобразований, маппинга в сущность из БД и лишнего кода в контроллере?

    • @shurik_codes
      @shurik_codes  Місяць тому +2

      1. Ну вообще да, тут логичнее было сначала получить список идентификаторов избранных товаров, а потом получить список товаров
      2. Данные для товара запрашиваются специально, чтобы не было попыток добавить отзыв к несуществующему товару. Остальное получается уже при ошибке валидации. Этих данных на данном этапе уже нет, т.к. мы их получали в предыдущем запросе.
      3. Не спорю, можно сделать проще

  • @user-nh5on1un2f
    @user-nh5on1un2f 2 місяці тому +3

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

    • @shurik_codes
      @shurik_codes  2 місяці тому

      Под капотом у реактивных стримов используется многопоточность - каждая задача в может исполняться в отдельном потоке из выделенного пула потоков. Виртуальные потоки и реактивные стримы, по сути, реализуют одну и ту же задачу - позволяют потоку исполнения переключаться между задачами при появлении блокирующих задач, поэтому не думаю, что есть смысл объединять реактивные стримы с виртуальными потоками, но поддержка виртуальных потоков есть в Project Reactor)

  • @user-ss4nl3zb8v
    @user-ss4nl3zb8v 2 місяці тому +1

    Ура. Новый урок

  • @drugsbunny_8641
    @drugsbunny_8641 2 місяці тому +1

    Я сейчас читаю Олег Докука, Игорь Лозинский - Практика реактивного программирования в Spring 5, тоже мне кажется, не плохая книга)

    • @shurik_codes
      @shurik_codes  2 місяці тому

      Возможно, не читал

  • @alexshutov5442
    @alexshutov5442 2 місяці тому +1

    реактивка рулит)

  • @svyatoiambrozii
    @svyatoiambrozii Місяць тому +1

    Здравствуйте! В примере работает на порту 8082, но если кейклок включен, то при запуске появляется сообщение данный порт занят. Вы данный сервис включали с выключенным кейклоком?

    • @shurik_codes
      @shurik_codes  Місяць тому +1

      Да, всё верно, я где-то упустил этот момент, порт должен быть 8083, т.к. на 8082 крутится Keycloak

  • @user-007-1
    @user-007-1 2 місяці тому +2

    Есть смысл сейчас погружаться в Флакс, делать новые проекты на нем, с учётом того, что есть 21 джава с её виртуальными потоками, и уже поддержка их в спринг Буте?

    • @shurik_codes
      @shurik_codes  2 місяці тому +2

      Для расширения кругозора и понимания реактивных шаблонов проектирования - почему бы и нет.

    • @drugsbunny_8641
      @drugsbunny_8641 2 місяці тому

      Плюс далеко не факт, что у тебя в продакшене будет 21 версия или выше)

  • @rustam_dk
    @rustam_dk Місяць тому

    подскажите пожалуйста, почему themleaf не хочет обрабатывать Mono, выходит ошибка Property or field 'title' cannot be found on object of type 'reactor.core.publisher.MonoFlatMap' - maybe not public or not valid?

    • @rustam_dk
      @rustam_dk Місяць тому

      случайно добавил зависимость spring-boot-starter-web, отсюда проблемы

  • @mahotinigor
    @mahotinigor 2 місяці тому

    Александр, а реактивные веб-приложения вы часто применяете в проде?

    • @shurik_codes
      @shurik_codes  2 місяці тому

      Нет, не часто, да и с появлением виртуальных потоков реактивные стримы стали менее актуальными

  • @USER-xi8mj
    @USER-xi8mj 2 місяці тому

    Построил crud с spring,hibernate,mysql. Куда дальше топать?

    • @shurik_codes
      @shurik_codes  2 місяці тому

      Security, OAuth/OIDC, кэширование, очереди сообщений, архитектура

    • @code0408
      @code0408 Місяць тому

      ​@@shurik_codes будет видео про очереди сообщений??

  • @dmaberlin
    @dmaberlin 15 годин тому

    Что случилось с автором на 15:34 :D

  • @ransuum5961
    @ransuum5961 2 місяці тому

    Привет, я прост делаю авторизацию, ну тренируюсь) и у меня почему-то форбиден при использование круд запросов, но регистрация и вход работает правильно, можно-ли получить помощь?

    • @shurik_codes
      @shurik_codes  2 місяці тому

      В первую очередь смотреть CSRF

  • @user-in8uk6yz9r
    @user-in8uk6yz9r Місяць тому +3

    @shurik_codes На 25:50 при попытке зайти на страницу накладка получается. Вероятно в каталоге отключена аутентификация. Т.к. если идти последовательно после предыдущих роликов, то новые сервис будет выдавать ошибку 401.

    • @shurik_codes
      @shurik_codes  Місяць тому

      Действительно, я этот момент даже не подсветил

    • @user-in8uk6yz9r
      @user-in8uk6yz9r Місяць тому

      @@shurik_codes Наверное, можно в описании под роликом это подсветить. Заодно проверить как люди читают ))