Тёмный

WebFlux. Реактивный web с Spring Java 

letsCode
Подписаться 46 тыс.
Просмотров 60 тыс.
50% 1

Spring Boot WebFlux. Разбираемся с реактивным стеком фреймворка Spring.
Поддержать проект:
➡ Стать спонсором ru-vid.comjoin
➡ Patreon / letscodedru
➡ Яндекс.Деньги money.yandex.ru/to/4100145167...
➡ PayPal paypal.me/letscodedru
➡ Qiwi qiwi.me/letscode
Реактивный подход становится стандартом в разработке. Java, как один из мейнстримовых языков, также имеет богатый инструментарий для разработки реактивных приложений.
Первым шагом попробуем сделать пару простых реактивных контроллеров как в новом, функциональном, так и в "старом" стиле - с помощью аннотаций и классов.
Код из видео:
github.com/drucoder/catalizat...
Генератор шаблона Spring Boot приложения:
start.spring.io/
Сборник коротких гайдов по Spring Boot:
spring.io/guides
Инструкция по созданию простого Spring WebFlux приложения в функциональном стиле:
spring.io/guides/gs/reactive-...
Документация
docs.spring.io/spring/docs/cu...
Плейлист по Spring Boot приложению Sweater:
• Spring Boot MVC (Sweat...
Плейлист по Spring Boot приложению Sarafan:
• Spring Boot Rest + Vue.js
Видео про проект Reactor:
• Project Reactor - реак...
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
➡ Второй канал: / geekchatdru
➡ Twitch: / drucoder
➡ Твиттер: / letscodedru
➡ Группа Вконтакте: letscodedru
➡ Канал в Telegram: t.me/letsCode_dru
➡ Чат в Telegram: t.me/joinchat/FeiP9xEhqHajfqh...
➡ Сервер в Discord: / discord
➡ Яндекс.Дзен: zen.yandex.ru/media/id/5ac209...

Опубликовано:

 

16 апр 2020

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 97   
@sfoxer
@sfoxer 3 года назад
Благодаря вашим видосам про Spring я разобрался как это работает, и сделал тестовое задание на собеседовании (надо было сделать и развернуть веб-сервис). Вот уже почти как пол года я backend-разработчик)) Обожаю ваш канал. Огромнейшее спасибо)
@anu8is930
@anu8is930 4 года назад
С нетерпением жду новых видео по реактивному спрингу)))) спасибо
@malloc9365
@malloc9365 4 года назад
Большое спасибо, очень доступно и понятно, такое надо сразу Впрод)
@uzbagoy6672
@uzbagoy6672 4 года назад
Быстро, понятно, "реактивно", подача отличная, смотрится в удовольствие. Спасибо!
@viktorkravtsov8724
@viktorkravtsov8724 4 года назад
Большое спасибо за материал!!! Это как раз то что нужно!!!!!!!
@user-yf6te4pi7h
@user-yf6te4pi7h 3 года назад
Спасибо огромное за твои видео! Они очень помогают в реальной работе!
@nikitaantonenko3287
@nikitaantonenko3287 3 года назад
Спасибо огромное!) Очень интересный урок)))
@silentwitness3363
@silentwitness3363 3 года назад
спасибо за урок Андрей, ты незаменим
@MrGrzegorz
@MrGrzegorz 4 года назад
Прям зашло, очень хорошая затравка для интересного проекта!
@romantsyupryk3009
@romantsyupryk3009 3 года назад
Большое вам спасибо за это видео.
@romankopylov5013
@romankopylov5013 4 года назад
Мужииик!!! Жирненький тебе лайкос! =) Ждем продолжения серии!
@starkoracia
@starkoracia 3 года назад
Больше ДиЧи!!! ))) Спасибо за труды!!
@artemvoronov4751
@artemvoronov4751 4 года назад
Познавательно, спасибо.
@romanmotovilov129
@romanmotovilov129 3 года назад
Кто поставил дизлайк? Зачем? Ведь этим урокам цены нет!!! Автору еще раз спасибо!
@fpsbard7267
@fpsbard7267 3 года назад
Точно такой же вопрос задаюсь когда вижу тонну лайков под видео этого автора. Автор видео ничего не объясняет , вместо этого он просто озвучивает то что он делает. Полезности 0. Уже ни раз давал шанс, так как вижу кучу просмотров под его видео и очень часто натыкаюсь на интересущие меня темы, но ничего не могу понять из его уроков, потому что объяснений нету ВООБЩЕ. Люди у которых есть опыт они ничего нового не подчеркнут, у которых опыта нет , ничего не поймут. Отсюда и дизлайки.
@yanvolkovich1414
@yanvolkovich1414 3 года назад
@@fpsbard7267 хм.. Ну не поняло получается только 13 из 1100 человек, значит автор просто бог педагог
@user-hb5wz9cs9o
@user-hb5wz9cs9o 4 года назад
Сразу лайк, не глядя
@santyagakolya2208
@santyagakolya2208 4 года назад
Супер!)
@zhuch9277
@zhuch9277 4 года назад
Еще не смотрел, но одобряю
@CRCx86
@CRCx86 4 года назад
Спасибо!
@alexsh5308
@alexsh5308 4 года назад
Отличное видео, спасибо! Было бы интересно также посмотреть , как правильно обрабатывать тело пост-запроса, сохранять в базу полученный объект, и возвращать на фронт его id, к примеру :)
@mwguy
@mwguy 4 года назад
Что что, но я хочу больше подобной дичи
@ostanislav
@ostanislav 4 года назад
Спасибо. Пока не могу понять нутром необходимость в реактивности и как она мне поможет. Что про дичь - побольше и подробнее. :-)
@iozhukau
@iozhukau 4 года назад
Спасибо за урок. Замечание по параметрам start и count. Это не пагинация вовсе, а просто фильтрация, от куда начать и сколько взять. Что бы это стало пагинацией, нужно в метод skip() передать start * count.
@yevheniikravchenko9127
@yevheniikravchenko9127 4 года назад
Лайк + коммент)
@takhir.atamuratov
@takhir.atamuratov 4 года назад
Спасибо за видео! Андрей, как нибудь сделай видео на тему WebFlux + JWT и WebFlux+Redis.
@PostMapping
@PostMapping 4 года назад
Очень интересно конечно, но пока ничего не понятно)
@almatrakhmetolla3324
@almatrakhmetolla3324 4 года назад
Очень интересно было бы если начнете новую рубрику где расскажете про языках и технологиях. Какой язык для чего нужен, в чем лучше остальных. В интернете конечно много всяких материалов но все они либо тупо опираются на статистику стэковерфлоу или же черезчур перемудрены что очень сложны новичкам. Сейчас этих самых ЯП и технологии очень много что всякие разные мнении о том что, мол тот язык круче или хуже сбивают с толку начинающих. Хотелось бы иметь какой то минимальной ясности в этом плане. Посмотрел последний стрим о реактивности, где под конец немножко затронули это, но там не все разобрано да и акцент самого стрима ставился не на это. Так что думаю все таки стоит открыть эту тему. Ввиде коротких обзорных видео или стримов, это уже решать вам. Но чтобы разговор был о реально значимых аспектах(с историческимим данными, сведениями) а не стэкоферфлоуских статистиках как это делают все блогеры. Спасибо!
@ddmit04
@ddmit04 4 года назад
Чудесно
@user-ni2kv6lj8r
@user-ni2kv6lj8r 4 года назад
Супер, даже хз, попадется ли такой стек в работе
@intBRiNGER
@intBRiNGER 4 года назад
- А под дичь будешь? - Под дичь, буду! - Федя, дичь. - Дичь! - Тссс! - Это дичь? - Это дичь? Дичь! - А под дичь водку не пьют! - А что? - Пьют это, вжух! PS. спасибо за дичь :)
@user-rh1ty5rx3h
@user-rh1ty5rx3h 4 года назад
Лайк
@phil2964
@phil2964 3 года назад
Никакой дичи, все супер!!!!!!!!!
@smdfb7334
@smdfb7334 4 года назад
Ого, это из-за того что я просил?
@valaubr4887
@valaubr4887 4 года назад
Как говорится: Все очень сложно, но очень интересно, больше дичи богу дичи!
@victormog
@victormog 4 года назад
Вау!
@MegaHuman91
@MegaHuman91 4 года назад
F2 - переводит курсор на проблемное место, чтоб не пикать курсором
@PostMapping
@PostMapping 2 года назад
Огромное спасибо!
@knowikDen
@knowikDen 4 года назад
Спасибо за отличный материал! В прочем как всегда :) Вопрос: если в spring инициализаторе выбрать packaging - war, то приложение запускается в контейнере tomcat. Причем дополнительно генерируется класс ServletInitializer. После запуска конечная точка localhost:8080/hello не доступна. Ошибка 404 Можете сказать почему? Как указать context root?
@ilyshkalive
@ilyshkalive 4 года назад
И все же какой подход лучше использовать? Функциональный или контроллеры? Что вызывает меньше проблем при дальнейшем изучении? К чему легче будет прикручивать логику авторизации, регистрации?
@Ivan-lx5lw
@Ivan-lx5lw 4 года назад
👍
@andreyshpitko9630
@andreyshpitko9630 4 года назад
cool!!!!!!! супер спасибо!!!!! а по Elasticsearch межете сделать паро видео?
@Igor-uz3vn
@Igor-uz3vn 3 года назад
Вопрос! А как много проектов сейчас делается или переделывается на реактивном спринге?
@hamadmiral
@hamadmiral 4 года назад
Больше дичи =) И пасиб за видео)
@snake--
@snake-- 4 года назад
"старый" стиль как то лаконичнее смотрится
@trygoboi4790
@trygoboi4790 3 года назад
Намного лаконичнее. Согласен с тобой. Этот реактивный способ похож на пхпишный или джанго стиль, который мне вообще не нравится. Одна аннотация раньше делала то что здесь несколько строк кода.
@arthurfonzerelli6484
@arthurfonzerelli6484 3 года назад
Я что-то не уловил вообще в чем смысл этого нового "стиля". Зачем одну сущность - контроллер делать на 2 - роутер и хэндлер, которые еще и находятся в разных классах и пакетах?
@trygoboi4790
@trygoboi4790 3 года назад
@@arthurfonzerelli6484 это для нас Джаверов непривычно. В пхп и джанго так и делают, роутеры в одном месте, хэндлеры в другом. В пыхе еще так, в джанго вообще что то типо глобальных и локальных для приложения роутеров и плюс еще хендлеры, вот это реально страшно и странно, и без строгой типизации вообще сложно разобраться.
@illarionborts7181
@illarionborts7181 3 года назад
@@arthurfonzerelli6484 ну во-первых в старом стиле тоже есть деление на контроллер и сервис (часто метод в контроллере вызывает метод в сервисе), а во-вторых никто ж не мешает засунуть побольше логики прямо в роутер, если хочется, будет Big Fat Router :)
@user-zx5sv2hb3u
@user-zx5sv2hb3u 4 года назад
А было где-то описание разницы мавен и градл?
@user-td6qx5no6m
@user-td6qx5no6m 2 года назад
07,09,2021 мы хотим больше дичи, больше подробностей, до байтов!!!1!
@igorvysotskyi
@igorvysotskyi 4 года назад
Пожалуйста, можно о многопоточности, также доступно и глубоко?!
@dmytromiroshnychenko420
@dmytromiroshnychenko420 4 года назад
Хех, первый коммент на ютубе.. и да, больше такой дичи. Хочется получить максимум полезностей из твоего опыта :))
@user-hw3kc3qz1r
@user-hw3kc3qz1r 4 года назад
Не понял что за дичь, но чем подробнее и обширнее гайд, тем лучше :)
@beSmarterThanMe
@beSmarterThanMe 4 года назад
Очень прошу сними туториал что за чем учить новичку от java core и до профессионала. Вангую будет очень много просмотров и подписок после него). Спасибо!
@gaben-agent
@gaben-agent 4 года назад
А какие следы сервлет контейнера должны быть? Лайк под видео поставил бтв)
@letsCodeDru
@letsCodeDru 4 года назад
Имя пакетов
@BarbosSergos
@BarbosSergos 4 года назад
Андрей, а можно видео как использовать webFlux с Korlin coroutine? :) Недавно пытался реализовать редирект get запроса через @RestController и Korlin corourine, так ничего и не вышло. Остановился на чистом webFlux.. Хотелось бы глубже, с "дичью", разобрать работу webFlux и Korlin coroutine.
@rudolfsikorsky7900
@rudolfsikorsky7900 Год назад
Так и не понял как раздать статический контент (например, файл index.html где нет ничего кроме HTML) через Webflux используя "классические" контроллеры. Как правильно написать @RestController ?
@rolymeck
@rolymeck 4 года назад
Спасибо за видео, Андрей! Скажи, чем все это добро лучше того же Express`a на NodeJS? Ну кроме строгой типизации конечно) в браузере стоит плагин, который маячит какие технологии у сайта, и в большинстве случаев (и даже у хайлоада, например Яндекс.Музыка) - там нода
@letsCodeDru
@letsCodeDru 4 года назад
Нода у многих фронт раздает. А бэк на чем-нибудь посерьезней
@rolymeck
@rolymeck 4 года назад
Раздавать фронт, это отдать html css и js бандлы? А все аяксы уже на gateway api -> back-end? Тогда опять же зачем нода, если есть nginx?
@user-qo5fv4fm1e
@user-qo5fv4fm1e 4 года назад
ждал в конце неудачные дубли как раньше, с кошкой там :(
@letsCodeDru
@letsCodeDru 4 года назад
Оставляю, когда они интересные
@alexeysharandin7364
@alexeysharandin7364 4 года назад
@letsCode, Андрей, по свех молодежному quarkus.io что нить делать планируешь?
@letsCodeDru
@letsCodeDru 4 года назад
Хз.еще пока не выработал к нему каких-то эмоций )
@alexeysharandin7364
@alexeysharandin7364 4 года назад
@@letsCodeDru Ну а что там эмоции то... Экосистемы как у спринг-бут еще нет, то есть для написания всякой мелочи быстро стартующей и масштабируемой, для тех кто на golang не пишет, чтобы в k8s засовывать. Пока там только одна фишка -> билд в graal. А дальше или спринг из инкубатора с graal-support вылезет или quarkus к себе затянет что-то новое. Как раз к тому времени Loom созреет и начнется новая миграция :)))
@Numen_
@Numen_ 4 года назад
Классно! а можете плиз как-нибудь пошарить свои настройки которые используете в idea? цветовые, функциональные
@letsCodeDru
@letsCodeDru 4 года назад
Дракула. Все остальное стандартное для винды
@user-xd7tp2zv1p
@user-xd7tp2zv1p 4 года назад
Из этого видео не понял лишь одно. Почему у тебя так мало подписчиков?)
@Taluksya
@Taluksya 4 года назад
можно не мучатся с задачами грейдл, можно просто скачать эклипс и там так же все подхватится, только бесплатно)
@Light-qo9vo
@Light-qo9vo 4 года назад
А как мусташ рендерит юзера? мы ведь передаем ему мапу, он сам делает get по ключу user и достает значение?
@letsCodeDru
@letsCodeDru 4 года назад
Ага
@serhiikrupskyi2954
@serhiikrupskyi2954 4 года назад
Вот бьі проект с написания микросервисов от автора. А то нормальньіх примеров в интернете просто нету.
@qweghj2660
@qweghj2660 4 года назад
Как использовать @JsonView в WebFlux?
@qweghj2660
@qweghj2660 4 года назад
А, все нашёл, кому интересно, смотрите в документации 1.5.2. ServerResponse
@antnzr656
@antnzr656 4 года назад
Винду что ли поставил? А где kubuntu?
@letsCodeDru
@letsCodeDru 4 года назад
Поломалась
@mikesomebody5404
@mikesomebody5404 4 года назад
Ого, а ты чего на винду переехал?
@letsCodeDru
@letsCodeDru 4 года назад
Ноут паламался :( а на рабочем линуксе не так удобно
@user-ux8dx9gv8p
@user-ux8dx9gv8p 3 года назад
а можно помедленнее?
@togrus8895
@togrus8895 4 года назад
Больше подобной дичи, хорошо когда объясняешь что к чему
@vorobeyrr
@vorobeyrr Год назад
больше такой дичи)
@AnnaSmirnova1
@AnnaSmirnova1 4 года назад
Больше дичи для бога дичи!
@user-uu8jn9wy3e
@user-uu8jn9wy3e 4 года назад
нужна вся дичь которая только есть
@victorchilari
@victorchilari 4 года назад
Что значит "реактивный", что ты под этим подразумеваешь?
@kannsky8812
@kannsky8812 4 года назад
кроме дичевого мустажа есть что-нибудь другое? лучше бы простой хтмл использовать
@andrewsapolsky3880
@andrewsapolsky3880 3 года назад
хах, хтмл просто не заюзаешь, можешь юзать thymeleaf, freemarker...
@heorhiutseuski4635
@heorhiutseuski4635 2 года назад
Больше дичи =))
@EvilCartman
@EvilCartman 4 года назад
Побольше дичи, конечно!
@wodzimierzletov2990
@wodzimierzletov2990 3 года назад
Нужно больше дичи!
@churchofhigherpower._.
@churchofhigherpower._. Год назад
Больше дичи!!!
@user-tz8vs7lc4j
@user-tz8vs7lc4j 2 года назад
Как в Mono отловить исключение и вернуть объект в его текстом? Очень много onError*..., но либо на входе мы не имеем исключение, имеем результат предыдущей операции, либо почему-то не резолвится метод onErrorReturn(Class type, T fallbackValue), хотя в приведённом коде ниже всё совпадает ( Например, при попытке добавить уже существующего пользователя @PostMapping Mono addUser(@RequestBody User user) { return Mono.just(user).map(userService::addUser) .onErrorReturn(UserAlreadyExistsException.class, ResponseEntity.status(HttpStatus.NOT_ACCEPTABLE).body("User already exists")) .map(usr -> ResponseEntity.status(HttpStatus.OK).body(modelMapper.map(usr, UserDto.class))); }
@rudolfsikorsky7900
@rudolfsikorsky7900 Год назад
Если .contentType(MediaType.TEXT_PLAIN), то кириллица будет выводиться кракозябрами. Надо указывать полный заголовок, например, так: return ServerResponse .ok() // .contentType(MediaType.TEXT_PLAIN) .header("HttpHeaders.CONTENT_TYPE", "text/plain; charset=utf-8") .body(body); А по теме видео, хотелось бы пояснений, по сравнению с "обычным" REST: роутер теперь вместо контроллера, хэндлер вместо сервиса, так что ли?
Далее
Project Reactor - реактивная Java
27:27
Просмотров 47 тыс.
Volkswagen судится с Volkswagen?
01:00
Просмотров 1,9 млн
Повага | GOVOR TikTok #govor #shots
00:53
Просмотров 294 тыс.
What is Spring Webflux and when to use it?
17:46
Просмотров 240 тыс.
Web чат на чистой Java (Vaadin)
24:22
Просмотров 23 тыс.
JAVA DTO Pattern Tutorial | Simplify Your Code
19:12
Просмотров 191 тыс.