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

Поделиться
HTML-код
  • Опубликовано: 15 ноя 2024
  • В шестом ролике серии я снова возвращаюсь к теме разработки веб-приложений, но на этот раз речь пойдёт о реактивных веб-приложениях на основе Spring WebFlux и Project Reactor. Попутно будут задеты темы применения инструментов интернационализации, Thymeleaf, а так же Jakarta Bean Validation, включая нюансы применения последней в реактивных веб-приложениях.
    В цикле роликов "Разработка проектов со Spring" я рассказываю на простых примерах о процессе разработки веб-приложений и REST-сервисов на языке программирования Java с использованием экосистемы Spring. Данный цикл охватывает разработку классических и реактивных проектов, вопросы их сопровождения, такие как документация и мониторинг, адаптацию их к облачной инфраструктуре и процесс их развёртывания в Docker и Kubernetes.
    Репозиторий проекта: github.com/ale...
    #java #spring #web #webflux #reactive #reactor #howto
    Мои ресурсы:
    Сайт: 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...

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

  • @seranzin4473
    @seranzin4473 8 месяцев назад +8

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

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

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

  • @ivandevon6865
    @ivandevon6865 8 месяцев назад +1

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

  • @enovoselovcom
    @enovoselovcom 8 месяцев назад +1

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

  • @ИванСевероднепровский
    @ИванСевероднепровский 8 месяцев назад +3

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

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

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

  • @drugsbunny_8641
    @drugsbunny_8641 8 месяцев назад +1

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

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

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

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

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

  • @AlexSmile-y2x
    @AlexSmile-y2x 7 месяцев назад +2

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

    • @shurik_codes
      @shurik_codes  7 месяцев назад +2

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

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

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

  • @dmaberlin
    @dmaberlin 5 месяцев назад +1

    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.

  • @denwerxampp4035
    @denwerxampp4035 8 месяцев назад +1

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

  • @user-007-1
    @user-007-1 8 месяцев назад +2

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

    • @shurik_codes
      @shurik_codes  8 месяцев назад +2

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

    • @drugsbunny_8641
      @drugsbunny_8641 7 месяцев назад

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

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

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

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

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

  • @mahotinigor
    @mahotinigor 7 месяцев назад

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

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

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

  • @alexshutov5442
    @alexshutov5442 8 месяцев назад +1

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

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

    подскажите пожалуйста, почему 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 6 месяцев назад

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

  • @USER-xi8mj
    @USER-xi8mj 8 месяцев назад

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

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

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

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

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

    • @hurricane-rus
      @hurricane-rus 4 месяца назад

      На собес)

  • @ransuum5961
    @ransuum5961 8 месяцев назад

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

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

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

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

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

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

      Голос начал садиться

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

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

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

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

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

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