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