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...
Автор, я в шоке от твоих видео, очень высокое качество, куда лучше чем примеры из документаций, надеюсь и дальше получать уведомления о новом видео :)
Про flux прямо то, что ждал
отличный контент, очень полезно, вы Учитель, с большой буквы!
Спасибо за полезный материал!
здравствуйте, недавно ввели виртуальные потоки, но я в целом возможно из-за ненасмотренности не встречал асинхронность (реактивность) в тандеме с многопоточностью. Все книги которые читал по многопоточке были с примерами на чистой джаве, а спринг продвигает концепцию асинхронщины и реактивности. Если можно, можете записать ролик о возможностях использования многопоточки в микросервисах и возможно даже тандем реактивщины и многопоточки. Особенно интересно было бы увидеть на примере модных виртуальных потоков. Спасибо за все что вы делаете
Под капотом у реактивных стримов используется многопоточность - каждая задача в может исполняться в отдельном потоке из выделенного пула потоков. Виртуальные потоки и реактивные стримы, по сути, реализуют одну и ту же задачу - позволяют потоку исполнения переключаться между задачами при появлении блокирующих задач, поэтому не думаю, что есть смысл объединять реактивные стримы с виртуальными потоками, но поддержка виртуальных потоков есть в Project Reactor)
Я сейчас читаю Олег Докука, Игорь Лозинский - Практика реактивного программирования в Spring 5, тоже мне кажется, не плохая книга)
Возможно, не читал
Спасибо, узнал много нового
Очень крутой видос, много полезной инфы, но не совсем понятны три момента:
1) для получения списка избранного мы вытягиваем из стороннего сервиса ВСЕ товары, после чего только фильтруем, разве так делают? можно как-будто сразу запрашивать список товаров по готовому у нас списку идентификаторов, разве нет?
2) при отправке отзыва мы осуществляем повторные запросы за данными по товару и по избванному. Для чего это? Почему не использовать готовые данные, мы ведь их уже запросили и получили.
3) зачем при запросе страницы товара мы тащим из таблички избранного его сущность, чтобы потом передавать константный флаг в модель? почему просто не запросить из БД этот флаг (наличие или отсутствие такой сущности), тем самым избежав лишних преобразований, маппинга в сущность из БД и лишнего кода в контроллере?
1. Ну вообще да, тут логичнее было сначала получить список идентификаторов избранных товаров, а потом получить список товаров
2. Данные для товара запрашиваются специально, чтобы не было попыток добавить отзыв к несуществующему товару. Остальное получается уже при ошибке валидации. Этих данных на данном этапе уже нет, т.к. мы их получали в предыдущем запросе.
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.
круто, хороший план)
Есть смысл сейчас погружаться в Флакс, делать новые проекты на нем, с учётом того, что есть 21 джава с её виртуальными потоками, и уже поддержка их в спринг Буте?
Для расширения кругозора и понимания реактивных шаблонов проектирования - почему бы и нет.
Плюс далеко не факт, что у тебя в продакшене будет 21 версия или выше)
Здравствуйте! В примере работает на порту 8082, но если кейклок включен, то при запуске появляется сообщение данный порт занят. Вы данный сервис включали с выключенным кейклоком?
Да, всё верно, я где-то упустил этот момент, порт должен быть 8083, т.к. на 8082 крутится Keycloak
Александр, а реактивные веб-приложения вы часто применяете в проде?
Нет, не часто, да и с появлением виртуальных потоков реактивные стримы стали менее актуальными
реактивка рулит)
подскажите пожалуйста, почему themleaf не хочет обрабатывать Mono, выходит ошибка Property or field 'title' cannot be found on object of type 'reactor.core.publisher.MonoFlatMap' - maybe not public or not valid?
случайно добавил зависимость spring-boot-starter-web, отсюда проблемы
Построил crud с spring,hibernate,mysql. Куда дальше топать?
Security, OAuth/OIDC, кэширование, очереди сообщений, архитектура
@@shurik_codes будет видео про очереди сообщений??
На собес)
Привет, я прост делаю авторизацию, ну тренируюсь) и у меня почему-то форбиден при использование круд запросов, но регистрация и вход работает правильно, можно-ли получить помощь?
В первую очередь смотреть CSRF
Что случилось с автором на 15:34 :D
Голос начал садиться
@shurik_codes На 25:50 при попытке зайти на страницу накладка получается. Вероятно в каталоге отключена аутентификация. Т.к. если идти последовательно после предыдущих роликов, то новые сервис будет выдавать ошибку 401.
Действительно, я этот момент даже не подсветил
@@shurik_codes Наверное, можно в описании под роликом это подсветить. Заодно проверить как люди читают ))