Благодаря вашим видосам про Spring я разобрался как это работает, и сделал тестовое задание на собеседовании (надо было сделать и развернуть веб-сервис). Вот уже почти как пол года я backend-разработчик)) Обожаю ваш канал. Огромнейшее спасибо)
Точно такой же вопрос задаюсь когда вижу тонну лайков под видео этого автора. Автор видео ничего не объясняет , вместо этого он просто озвучивает то что он делает. Полезности 0. Уже ни раз давал шанс, так как вижу кучу просмотров под его видео и очень часто натыкаюсь на интересущие меня темы, но ничего не могу понять из его уроков, потому что объяснений нету ВООБЩЕ. Люди у которых есть опыт они ничего нового не подчеркнут, у которых опыта нет , ничего не поймут. Отсюда и дизлайки.
Спасибо за урок. Замечание по параметрам start и count. Это не пагинация вовсе, а просто фильтрация, от куда начать и сколько взять. Что бы это стало пагинацией, нужно в метод skip() передать start * count.
И все же какой подход лучше использовать? Функциональный или контроллеры? Что вызывает меньше проблем при дальнейшем изучении? К чему легче будет прикручивать логику авторизации, регистрации?
- А под дичь будешь? - Под дичь, буду! - Федя, дичь. - Дичь! - Тссс! - Это дичь? - Это дичь? Дичь! - А под дичь водку не пьют! - А что? - Пьют это, вжух! PS. спасибо за дичь :)
Очень интересно было бы если начнете новую рубрику где расскажете про языках и технологиях. Какой язык для чего нужен, в чем лучше остальных. В интернете конечно много всяких материалов но все они либо тупо опираются на статистику стэковерфлоу или же черезчур перемудрены что очень сложны новичкам. Сейчас этих самых ЯП и технологии очень много что всякие разные мнении о том что, мол тот язык круче или хуже сбивают с толку начинающих. Хотелось бы иметь какой то минимальной ясности в этом плане. Посмотрел последний стрим о реактивности, где под конец немножко затронули это, но там не все разобрано да и акцент самого стрима ставился не на это. Так что думаю все таки стоит открыть эту тему. Ввиде коротких обзорных видео или стримов, это уже решать вам. Но чтобы разговор был о реально значимых аспектах(с историческимим данными, сведениями) а не стэкоферфлоуских статистиках как это делают все блогеры. Спасибо!
Отличное видео, спасибо! Было бы интересно также посмотреть , как правильно обрабатывать тело пост-запроса, сохранять в базу полученный объект, и возвращать на фронт его id, к примеру :)
Очень прошу сними туториал что за чем учить новичку от java core и до профессионала. Вангую будет очень много просмотров и подписок после него). Спасибо!
Так и не понял как раздать статический контент (например, файл index.html где нет ничего кроме HTML) через Webflux используя "классические" контроллеры. Как правильно написать @RestController ?
Спасибо за отличный материал! В прочем как всегда :) Вопрос: если в spring инициализаторе выбрать packaging - war, то приложение запускается в контейнере tomcat. Причем дополнительно генерируется класс ServletInitializer. После запуска конечная точка localhost:8080/hello не доступна. Ошибка 404 Можете сказать почему? Как указать context root?
Намного лаконичнее. Согласен с тобой. Этот реактивный способ похож на пхпишный или джанго стиль, который мне вообще не нравится. Одна аннотация раньше делала то что здесь несколько строк кода.
Я что-то не уловил вообще в чем смысл этого нового "стиля". Зачем одну сущность - контроллер делать на 2 - роутер и хэндлер, которые еще и находятся в разных классах и пакетах?
@@arthurfonzerelli6484 это для нас Джаверов непривычно. В пхп и джанго так и делают, роутеры в одном месте, хэндлеры в другом. В пыхе еще так, в джанго вообще что то типо глобальных и локальных для приложения роутеров и плюс еще хендлеры, вот это реально страшно и странно, и без строгой типизации вообще сложно разобраться.
@@arthurfonzerelli6484 ну во-первых в старом стиле тоже есть деление на контроллер и сервис (часто метод в контроллере вызывает метод в сервисе), а во-вторых никто ж не мешает засунуть побольше логики прямо в роутер, если хочется, будет Big Fat Router :)
@@letsCodeDru Ну а что там эмоции то... Экосистемы как у спринг-бут еще нет, то есть для написания всякой мелочи быстро стартующей и масштабируемой, для тех кто на golang не пишет, чтобы в k8s засовывать. Пока там только одна фишка -> билд в graal. А дальше или спринг из инкубатора с graal-support вылезет или quarkus к себе затянет что-то новое. Как раз к тому времени Loom созреет и начнется новая миграция :)))
Андрей, а можно видео как использовать webFlux с Korlin coroutine? :) Недавно пытался реализовать редирект get запроса через @RestController и Korlin corourine, так ничего и не вышло. Остановился на чистом webFlux.. Хотелось бы глубже, с "дичью", разобрать работу webFlux и Korlin coroutine.
Спасибо за видео, Андрей! Скажи, чем все это добро лучше того же Express`a на NodeJS? Ну кроме строгой типизации конечно) в браузере стоит плагин, который маячит какие технологии у сайта, и в большинстве случаев (и даже у хайлоада, например Яндекс.Музыка) - там нода
Если .contentType(MediaType.TEXT_PLAIN), то кириллица будет выводиться кракозябрами. Надо указывать полный заголовок, например, так: return ServerResponse .ok() // .contentType(MediaType.TEXT_PLAIN) .header("HttpHeaders.CONTENT_TYPE", "text/plain; charset=utf-8") .body(body); А по теме видео, хотелось бы пояснений, по сравнению с "обычным" REST: роутер теперь вместо контроллера, хэндлер вместо сервиса, так что ли?
Как в 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))); }
Благодаря вашим видосам про Spring я разобрался как это работает, и сделал тестовое задание на собеседовании (надо было сделать и развернуть веб-сервис). Вот уже почти как пол года я backend-разработчик)) Обожаю ваш канал. Огромнейшее спасибо)
Кто поставил дизлайк? Зачем? Ведь этим урокам цены нет!!! Автору еще раз спасибо!
Точно такой же вопрос задаюсь когда вижу тонну лайков под видео этого автора. Автор видео ничего не объясняет , вместо этого он просто озвучивает то что он делает. Полезности 0. Уже ни раз давал шанс, так как вижу кучу просмотров под его видео и очень часто натыкаюсь на интересущие меня темы, но ничего не могу понять из его уроков, потому что объяснений нету ВООБЩЕ. Люди у которых есть опыт они ничего нового не подчеркнут, у которых опыта нет , ничего не поймут. Отсюда и дизлайки.
@@fpsbard7267 хм.. Ну не поняло получается только 13 из 1100 человек, значит автор просто бог педагог
10/10 для нового проекта нужно было разобраться в реактиве вместо привычного сервлета
ваши уроки помогли буквально за час понять что к чему
Быстро, понятно, "реактивно", подача отличная, смотрится в удовольствие. Спасибо!
Большое спасибо, очень доступно и понятно, такое надо сразу Впрод)
С нетерпением жду новых видео по реактивному спрингу)))) спасибо
Большое спасибо за материал!!! Это как раз то что нужно!!!!!!!
спасибо за урок
Андрей, ты незаменим
Что что, но я хочу больше подобной дичи
Больше ДиЧи!!! )))
Спасибо за труды!!
Мужииик!!! Жирненький тебе лайкос! =)
Ждем продолжения серии!
Прям зашло, очень хорошая затравка для интересного проекта!
Спасибо. Пока не могу понять нутром необходимость в реактивности и как она мне поможет. Что про дичь - побольше и подробнее. :-)
Спасибо за урок.
Замечание по параметрам start и count.
Это не пагинация вовсе, а просто фильтрация, от куда начать и сколько взять. Что бы это стало пагинацией, нужно в метод skip() передать start * count.
Очень интересно конечно, но пока ничего не понятно)
Спасибо огромное за твои видео! Они очень помогают в реальной работе!
Большое вам спасибо за это видео.
Спасибо огромное!) Очень интересный урок)))
И все же какой подход лучше использовать? Функциональный или контроллеры?
Что вызывает меньше проблем при дальнейшем изучении? К чему легче будет прикручивать логику авторизации, регистрации?
Спасибо за видео! Андрей, как нибудь сделай видео на тему WebFlux + JWT и WebFlux+Redis.
- А под дичь будешь?
- Под дичь, буду!
- Федя, дичь.
- Дичь!
- Тссс!
- Это дичь?
- Это дичь? Дичь!
- А под дичь водку не пьют!
- А что?
- Пьют это, вжух!
PS. спасибо за дичь :)
Сразу лайк, не глядя
Очень интересно было бы если начнете новую рубрику где расскажете про языках и технологиях. Какой язык для чего нужен, в чем лучше остальных. В интернете конечно много всяких материалов но все они либо тупо опираются на статистику стэковерфлоу или же черезчур перемудрены что очень сложны новичкам. Сейчас этих самых ЯП и технологии очень много что всякие разные мнении о том что, мол тот язык круче или хуже сбивают с толку начинающих. Хотелось бы иметь какой то минимальной ясности в этом плане. Посмотрел последний стрим о реактивности, где под конец немножко затронули это, но там не все разобрано да и акцент самого стрима ставился не на это. Так что думаю все таки стоит открыть эту тему. Ввиде коротких обзорных видео или стримов, это уже решать вам. Но чтобы разговор был о реально значимых аспектах(с историческимим данными, сведениями) а не стэкоферфлоуских статистиках как это делают все блогеры. Спасибо!
F2 - переводит курсор на проблемное место, чтоб не пикать курсором
Огромное спасибо!
Никакой дичи, все супер!!!!!!!!!
Супер!)
Отличное видео, спасибо! Было бы интересно также посмотреть , как правильно обрабатывать тело пост-запроса, сохранять в базу полученный объект, и возвращать на фронт его id, к примеру :)
Еще не смотрел, но одобряю
Познавательно, спасибо.
Очень прошу сними туториал что за чем учить новичку от java core и до профессионала. Вангую будет очень много просмотров и подписок после него). Спасибо!
Так и не понял как раздать статический контент (например, файл index.html где нет ничего кроме HTML) через Webflux используя "классические" контроллеры. Как правильно написать @RestController ?
cool!!!!!!!
супер спасибо!!!!!
а по Elasticsearch межете сделать паро видео?
Супер, даже хз, попадется ли такой стек в работе
Ого, это из-за того что я просил?
Спасибо за отличный материал! В прочем как всегда :)
Вопрос: если в spring инициализаторе выбрать packaging - war, то приложение запускается в контейнере tomcat.
Причем дополнительно генерируется класс ServletInitializer.
После запуска конечная точка localhost:8080/hello не доступна. Ошибка 404
Можете сказать почему?
Как указать context root?
Как говорится: Все очень сложно, но очень интересно, больше дичи богу дичи!
Вопрос! А как много проектов сейчас делается или переделывается на реактивном спринге?
07,09,2021
мы хотим больше дичи, больше подробностей, до байтов!!!1!
Лайк + коммент)
"старый" стиль как то лаконичнее смотрится
Намного лаконичнее. Согласен с тобой. Этот реактивный способ похож на пхпишный или джанго стиль, который мне вообще не нравится. Одна аннотация раньше делала то что здесь несколько строк кода.
Я что-то не уловил вообще в чем смысл этого нового "стиля". Зачем одну сущность - контроллер делать на 2 - роутер и хэндлер, которые еще и находятся в разных классах и пакетах?
@@arthurfonzerelli6484 это для нас Джаверов непривычно. В пхп и джанго так и делают, роутеры в одном месте, хэндлеры в другом. В пыхе еще так, в джанго вообще что то типо глобальных и локальных для приложения роутеров и плюс еще хендлеры, вот это реально страшно и странно, и без строгой типизации вообще сложно разобраться.
@@arthurfonzerelli6484 ну во-первых в старом стиле тоже есть деление на контроллер и сервис (часто метод в контроллере вызывает метод в сервисе), а во-вторых никто ж не мешает засунуть побольше логики прямо в роутер, если хочется, будет Big Fat Router :)
Не понял что за дичь, но чем подробнее и обширнее гайд, тем лучше :)
Спасибо!
@letsCode, Андрей, по свех молодежному quarkus.io что нить делать планируешь?
Хз.еще пока не выработал к нему каких-то эмоций )
@@letsCodeDru Ну а что там эмоции то... Экосистемы как у спринг-бут еще нет, то есть для написания всякой мелочи быстро стартующей и масштабируемой, для тех кто на golang не пишет, чтобы в k8s засовывать. Пока там только одна фишка -> билд в graal. А дальше или спринг из инкубатора с graal-support вылезет или quarkus к себе затянет что-то новое. Как раз к тому времени Loom созреет и начнется новая миграция :)))
Чудесно
А было где-то описание разницы мавен и градл?
Андрей, а можно видео как использовать webFlux с Korlin coroutine? :) Недавно пытался реализовать редирект get запроса через @RestController и Korlin corourine, так ничего и не вышло. Остановился на чистом webFlux.. Хотелось бы глубже, с "дичью", разобрать работу webFlux и Korlin coroutine.
Пожалуйста, можно о многопоточности, также доступно и глубоко?!
ждал в конце неудачные дубли как раньше, с кошкой там :(
Оставляю, когда они интересные
Вау!
Хех, первый коммент на ютубе.. и да, больше такой дичи. Хочется получить максимум полезностей из твоего опыта :))
👍
Классно! а можете плиз как-нибудь пошарить свои настройки которые используете в idea?
цветовые, функциональные
Дракула. Все остальное стандартное для винды
Очень интересно, но ни фига не понятно))))
Больше дичи =)
И пасиб за видео)
Лайк
Спасибо за видео, Андрей! Скажи, чем все это добро лучше того же Express`a на NodeJS? Ну кроме строгой типизации конечно) в браузере стоит плагин, который маячит какие технологии у сайта, и в большинстве случаев (и даже у хайлоада, например Яндекс.Музыка) - там нода
Нода у многих фронт раздает. А бэк на чем-нибудь посерьезней
Раздавать фронт, это отдать html css и js бандлы? А все аяксы уже на gateway api -> back-end?
Тогда опять же зачем нода, если есть nginx?
А как мусташ рендерит юзера? мы ведь передаем ему мапу, он сам делает get по ключу user и достает значение?
Ага
Из этого видео не понял лишь одно. Почему у тебя так мало подписчиков?)
А какие следы сервлет контейнера должны быть?
Лайк под видео поставил бтв)
Имя пакетов
можно не мучатся с задачами грейдл, можно просто скачать эклипс и там так же все подхватится, только бесплатно)
Вот бьі проект с написания микросервисов от автора. А то нормальньіх примеров в интернете просто нету.
Как использовать @JsonView в WebFlux?
А, все нашёл, кому интересно, смотрите в документации 1.5.2. ServerResponse
Винду что ли поставил? А где kubuntu?
Поломалась
Ого, а ты чего на винду переехал?
Ноут паламался :( а на рабочем линуксе не так удобно
Что значит "реактивный", что ты под этим подразумеваешь?
а можно помедленнее?
кроме дичевого мустажа есть что-нибудь другое? лучше бы простой хтмл использовать
хах, хтмл просто не заюзаешь, можешь юзать thymeleaf, freemarker...
Больше подобной дичи, хорошо когда объясняешь что к чему
больше такой дичи)
Больше дичи для бога дичи!
Больше дичи =))
нужна вся дичь которая только есть
Нужно больше дичи!
Побольше дичи, конечно!
Больше дичи!!!
Если .contentType(MediaType.TEXT_PLAIN), то кириллица будет выводиться кракозябрами. Надо указывать полный заголовок, например, так:
return ServerResponse
.ok()
// .contentType(MediaType.TEXT_PLAIN)
.header("HttpHeaders.CONTENT_TYPE", "text/plain; charset=utf-8")
.body(body);
А по теме видео, хотелось бы пояснений, по сравнению с "обычным" REST: роутер теперь вместо контроллера, хэндлер вместо сервиса, так что ли?
Как в 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)));
}