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

  Рет қаралды 14,182

Уголок сельского джависта

Уголок сельского джависта

3 ай бұрын

В первом ролике цикла я демонстрирую разработку классического веб-приложения со Spring WebMVC, Thymeleaf и Jakarta Bean Validation. В ролике демонстрируется несколько способов создания нового проекта на основе Spring Boot, вкратце описывается многоуровневая архитектура и шаблон проектирования MVC, создание базовых компонентов приложения, валидация данных и интернационализация. Кроме этого продемонстрировано несколько способов запуска приложения на основе Spring Boot.
В цикле роликов "Разработка проектов со Spring" я рассказываю на простых примерах о процессе разработки веб-приложений и REST-сервисов на языке программирования Java с использованием экосистемы Spring. Данный цикл охватывает разработку классических и реактивных проектов, вопросы их сопровождения, такие как документация и мониторинг, адаптацию их к облачной инфраструктуре и процесс их развёртывания в Docker и Kubernetes.
Репозиторий проекта: github.com/alex-kosarev/sc24/...
Мои ресурсы:
- Сайт: alexkosarev.name
- Канал на KZfaq: / @shurik_codes
- Канал в Telegram: t.me/+TZCuO38vG3oqu_Jq
- Группа для обсуждений в Telegram: t.me/+UFAkw187WstX0wqy
- Паблик в VK: shurik.codes
- Канал в Дзене: dzen.ru/shurik_codes
- Канал на Rutube: rutube.ru/channel/24432001/
- Страница в Boosty: boosty.to/akosarev
Поддержать проект:
- Доны в VK: donut/shurik.codes
- Донаты в Boosty: boosty.to/akosarev/donate
- Через Tinkoff: www.tinkoff.ru/cf/4PEOiVCZQuS
#java #spring #web #validation #thymeleaf #howto

Пікірлер: 140
@fedotfeda
@fedotfeda 5 күн бұрын
Успехов Вам и спасибо за полезную информацию
@Devivl
@Devivl 3 ай бұрын
Александр - потрясающий преподаватель. Всегда очень приятно смотреть и слушать. Спасибо, Саш, что ты делаешь.
@eugenz2334
@eugenz2334 3 ай бұрын
Присоединяюсь, для меня тоже один из лучших преподавателей 🔥🔥
@matthew_-cf6qo
@matthew_-cf6qo Ай бұрын
После всех других роликов по спринг - отбивались руки только. У вас же всё очень понятно и информативно, появилась вера в возможность освоения фреймворка😆. Буду продолжать смотреть ваш канал. Успехов вам!
@luckytima2315
@luckytima2315 2 ай бұрын
Братик вот хочешь верь или не верь, но то что ты делаешь это имба дикая !
@svyatoiambrozii
@svyatoiambrozii Ай бұрын
Очень хорошо, что вы стали записывать такие интересные ролики, которые не только зеленому новичку будут полезны. 🙂👍👍👍
@akalavan5395
@akalavan5395 Ай бұрын
Классный, полезный ролик без воды. Все полтора часа полезной информации. Хотелось бы по больше фишек, которые применяются в реальной разработки
@user-ss4nl3zb8v
@user-ss4nl3zb8v 3 ай бұрын
Отличное видео. Главное, чтобы запал не пропал у человека. Хотелось бы про деплой на прод увидеть - как сервис выбрать, как залить, как запустить, какие особенности и т.д. - в общих чертах. Поддержу комментаторов выше- автор очень понятно и интересно объясняет. Спасибо! Жду следующие выпуски.
@alexandr6055
@alexandr6055 3 ай бұрын
Не пропадет. Он уже отснял все 22 ролика, просто выкладывает поэтапно)
@user-ss4nl3zb8v
@user-ss4nl3zb8v 3 ай бұрын
@@alexandr6055 да, спасибо, я увидел его вступительный ролик. Темы хорошие озвучивает, посмотрю все обязательно.
@artyomzolotoverkhov8468
@artyomzolotoverkhov8468 20 күн бұрын
Класс, очень понятно и доступно, очень рад что нашел ваши видео вКонтакте, а теперь и здесь на канале! Однозначно подписка.
@ArtFanRamm
@ArtFanRamm Ай бұрын
Отличный контент Александр, продолжайте, не останавливайтесь) Ваши труды поддержал донатом, благодарю за уроки
@danil2590
@danil2590 Ай бұрын
Друг, хочу сказать тебе огромное спасибо. Очень тяжело найти свежие ролики, где всё досконально объясняют. Спасибо тебе огромное!
@denisthestudent
@denisthestudent 20 күн бұрын
Спасибо за урок! Я недавно теорию по спрингу выучил, а тут практика годная с объяснением тонких моментов. Сохраняешь работягам кучу времени. Чисто кайф. P.S. Круто, что оставляешь моменты типа такого 1:26:51 было весело видеть твою реакцию на баг
@DaOrNot
@DaOrNot 2 ай бұрын
Опыта работы программистом не имею, только обучаюсь длительное время. С данного видео получил больше полезной инфы чем от всяких лекций и многих других видео с ютуба. Очень благодарен за труд, твои видео как клад, очень рад что наткнулся.
@MgsMen
@MgsMen 3 ай бұрын
Ждал этот видос больше, чем выход второй Дюны !!
@alexbern8656
@alexbern8656 2 ай бұрын
было бы интересно, в будущем, увидеть ролики про проектирование приложения в гексагональной архитектуре)
@oleksandrhavryush9250
@oleksandrhavryush9250 2 ай бұрын
Большое спасибо. Очень информативно. Как раз сейчас начинаю писать свою дипломную работу по Спрингу и очень рад, что вас нашел.
@user-cm4jg9on2j
@user-cm4jg9on2j 2 ай бұрын
Супер! Смотрится на одном дыхании, как детективная история, чем дальше - тем интереснее
@user-bn9wc8db6s
@user-bn9wc8db6s 3 ай бұрын
1,5 часа == ОГОНЬ!!! Спасибо , Александр!
@alexer8442
@alexer8442 3 ай бұрын
Давненько не видел!! Очень рад, что не забросил дело)))
@spell3961
@spell3961 3 ай бұрын
Спасибо Вам огромное!!!)))) Очень информативно, понятно и интересно Лучший канал по Джаве))))
@user-yf2er5vr8q
@user-yf2er5vr8q 3 ай бұрын
cпасибо большое вы как будто услышали наши пожелания
@maxnone2066
@maxnone2066 3 ай бұрын
Огромное спасибо автору. Отличное видео!
@11kotikov
@11kotikov 3 ай бұрын
Офигенно! Спасибо большое, еще и настолько подробно и понятно!
@user-qo6wb7gu7n
@user-qo6wb7gu7n 3 ай бұрын
Спасибо! ждем продолжения!
@nigma933
@nigma933 2 ай бұрын
Спасибо вам огромное за урок!
@user-yk8zz3mw5y
@user-yk8zz3mw5y 2 ай бұрын
Спасибо за то, что делитесь знаниями! Видео отличное, всё чётко и понятно)
@neyasbit
@neyasbit 26 күн бұрын
Бомба 💣💣💣
@Boraldan
@Boraldan 3 ай бұрын
Спасибо! Будем просвещаться )
@Hocorend
@Hocorend 25 күн бұрын
Спасибо, самое то, что мне сейчас нужно
@Admin-qw7ss
@Admin-qw7ss 3 ай бұрын
Спасибо! Все крайне понятно
@user-xk4pl1sr9l
@user-xk4pl1sr9l 3 ай бұрын
Спасибо за контент!
@user-ib7vx3yc4i
@user-ib7vx3yc4i 2 ай бұрын
Отличная серия роликов
@markostr
@markostr 2 ай бұрын
Спасибо ! Но нужно еще раз пересмотреть и попробывать своими ручками. Мне очень понравилось
@pablik8387
@pablik8387 2 ай бұрын
Спасибо за видос, как всегда кайфанул
@alexbern8656
@alexbern8656 2 ай бұрын
как всегда хорошо, спасибо
@user-hd7ix7hc9s
@user-hd7ix7hc9s 3 ай бұрын
Это прекрасно! Мне как раз спринг освоить сильно захотелось день назад :)
@Boraldan
@Boraldan 3 ай бұрын
Интригующе.
@vadimkharovyuk7660
@vadimkharovyuk7660 3 ай бұрын
большое спасибо _ побольше таких уроков +) лайк комент подписка
@Edu-wi3il
@Edu-wi3il 2 ай бұрын
Спасибо! Было интересно узнать про валидацию данных и интернализацию, а также что можно аннотировать @ModelAttribute методы. Как предложение, можно было кратко описать спецсимволы HTML в ходе повествования, либо привести ссылку на документацию, а также добавить пример подключения статических ресурсов CSS и JS, все таки это распространенный кейс
@shurik_codes
@shurik_codes 2 ай бұрын
Про валидацию уже был ролик на канале, про Thymeleaf будут
@peachack7903
@peachack7903 2 ай бұрын
Огромное спасибо за труд! Было бы отлично добавить тайм-коды к видео:) Когда пытаюсь повторить на практике, часто возвращаюсь к разным частям разных уроков, пытаясь вспомнить где и что было рассказано и показано)
@shurik_codes
@shurik_codes 2 ай бұрын
Таймкоды будут, не успел их проставить
@romanovichihin2429
@romanovichihin2429 26 күн бұрын
коммент для продвижения
@qaisarbaltabay
@qaisarbaltabay 3 ай бұрын
ждееем!!!!!
@dmaberlin
@dmaberlin 2 ай бұрын
это настоящий подарок :D
@duming3076
@duming3076 28 күн бұрын
谢谢老师,你厉害得很
@viva8357
@viva8357 3 ай бұрын
Классный материал. Очень насыщенный и наглядный! Александр, в начале ролика Вы упомянули, что будете разрабатывать многомодульный проект, и каждый модуль будет развернут как отдельный микросервис. Хотелось бы узнать почему выбран именно такой подход? Если за альтернативу взять вариант с разработкой каждого приложения в отдельном проекте, то какие плюсы и минусы будут в сравнении с выбранным Вами подходом?
@shurik_codes
@shurik_codes 3 ай бұрын
Мне так проще всё держать в одном месте) В реальных условиях так не всегда удобно делать
@user-su1zq3ud8x
@user-su1zq3ud8x 2 ай бұрын
Спасибо, что выпускаешь свои ролики, многие моменты из твоих роликов помогают улучшить мой код. Такой вопрос: Почему ты в подавляющей части роликов используешь систему сборки maven, а не gradle?
@shurik_codes
@shurik_codes 2 ай бұрын
Я использую во всех роликах maven, потому что привык)
@DimaJigalov
@DimaJigalov Ай бұрын
Простите, а чем обусловлен выбор Linked List в качестве структуры данных для продуктов в ин мемори репо?
@olgapro2640
@olgapro2640 2 ай бұрын
Здравствуйте, у вас в плейлисте перепутаны первый и второй ролики
@user-rv9ss5ce7z
@user-rv9ss5ce7z 3 ай бұрын
велосипед не изобрел но под пивасик нормас!
@user-lm1sm2ek3h
@user-lm1sm2ek3h 2 ай бұрын
Спасибо за отличный контент! А что за расширение, которое показывает simple (0%) и что оно вообще делает?
@shurik_codes
@shurik_codes 2 ай бұрын
Code complexity
@user-007-1
@user-007-1 3 ай бұрын
Используете ли инструменты ИИ для помощи с написанием кода, и с генерацией тестов?
@shurik_codes
@shurik_codes 3 ай бұрын
Нет, всё пишу сам
@t0tom427
@t0tom427 2 ай бұрын
Спасибо за видео, повторял сейчас за вами все и столкнулся с ошибкой что форма вела на /catalogue/products/catalogue/products/create, изменил data-th-action="@{/catalogue/products/create}" на data-th-action="@{create}" и все заработало, форма перенаправляет куда надо. Интересно с чем связано такое поведение🤔
@rainrainov4495
@rainrainov4495 2 ай бұрын
Добрый день! Что бы вы посоветовали использовать для интеграционного тестирования MockMvc, TestRestTemplate, WebTestClient, RestAssure возможно другой вариант. Для работы с WebTestClient обязательно добавлять webflux или в последних версиях Spring можно настроить и без webflux?
@shurik_codes
@shurik_codes 2 ай бұрын
По тесты будут 5 и 10 ролики, RestAssured выглядит перспективнее всех за счёт универсальности, но я использую либо MockMvc, либо WebTestClient. Да, для последнего нужен webflux
@kxeklom
@kxeklom 2 ай бұрын
21:48 Присоединяюсь к комментариям ниже, действительно, смотреть ваши уроки одно удовольствие. Но у меня один вопрос. Почему мы помечаем стереотипными аннотациями саму реализацию интерфейса, а не сам интерфейс. Пометив аннотацией реализацию интерфейса, Spring создаст бины классов реализующих его?
@shurik_codes
@shurik_codes 2 ай бұрын
1. Если я ничего не путаю, то применение стереотипичных аннотаций к интерфейсам не регистрирует соответствующие компоненты в контексте приложения, а это ведёт к возникновению NoSuchBeanDefinitionException при попытке внедрения. 2. При таком подходе интерфейс в какой-то мере становится зависимым от Spring, а я стараюсь делать интерфейсы независимыми, не смотря на всю свою любовь к Spring. Но вообще я на практике из стереотипных аннотаций использую только @Controller, остальные компоненты я предпочитаю конфигурировать руками в @Configuration/@Bean.
@dmitrelkin9256
@dmitrelkin9256 3 ай бұрын
Александр, вопрос: можно чуть подробней - для чего нужно что бы при компиляции сохранялись наименования аргументов методов? (об говорится в 20:00 по шкале времени)
@shurik_codes
@shurik_codes 3 ай бұрын
Чтобы не уточнять в @PathVariable, @RequestParam и других аналогичных аннотациях названия переменных. Например, если скомпилировать без сохранением названия аргументов такой код: @RequestMapping("/path/with/{variable}") String doSomething(@PathVariable String variable) то аргумент в рантайме будет называться arg0 (вроде), и при вызове метода будет выброшено исключение, т.к. в пути нет {arg0}
@dmitrelkin9256
@dmitrelkin9256 3 ай бұрын
@@shurik_codes Спасибо! вот такие объяснения очень ценны для чайников!
@user-gu1sv3ct4f
@user-gu1sv3ct4f 9 күн бұрын
Здравствуйте, спасибо за видео, подскажите, зачем делать 2 pom.xml файла?
@shurik_codes
@shurik_codes 7 күн бұрын
Каждый pom-файл отвечает за отдельный модуль, корневой - за весь проект в целом
@alexandr6055
@alexandr6055 3 ай бұрын
скажите, а для чего при обращении в методах к сервисам или репозиториям которые инжектированы внутри класса вы используете конструкцию this.servise...? Что даёт здесь этот this?
@shurik_codes
@shurik_codes 3 ай бұрын
для собственного удобства, чтобы видеть, что обращение идёт к свойству экземпляра класса, а не к локальной переменной
@viewer_evgeniy
@viewer_evgeniy 2 ай бұрын
Здравствуйте! Спасибо за ваши видео. Подскажите пожалуйста, в чем разница между аннотацией @ModelAttribute и использованием модели в качестве параметра и соответственно добавлением атрибутов с помощью метода addAttribute.
@shurik_codes
@shurik_codes 2 ай бұрын
Оба данных подхода реализуют одно и то же действие - добавление атрибута в модель. @ModelAttribute позволяет написать метод, добавляющий атрибут в модель для всех запросов, обрабатываемых в контроллере. По сути уменьшается дублирование кода.
@9-260
@9-260 2 ай бұрын
Спасибо за видео! Но у меня в процессе просмотра возникло пару вопросов: 1. 23:30 А если у меня две реализации ProductService как спринг будет выбирать екземпляр. 2. Почему вы синхронизировали список через Collections а не пакет concurrency. 3. 40:37 Можно ли было написать product.setId(products.size() + 1);? 4. Что за магия происходит с @PostMapping("create") public String createProduct(NewProductPayload payload) Как класс NewProductPayload собирается над ним даже аннотаций не стоит, как это работает? 5. Почему метод updateProduct в DefaultProductService мы реализовали так как реализовали, а не как до этого вызвали бы метод у productRepository?
@shurik_codes
@shurik_codes 2 ай бұрын
1. @Qualifier или @Order/@Priority 2. Первое, что в голову пришло 3. Тогда возможно появление в разных промежутках времени разных товаров с одним идентификатором, но опять же это не играет большой роли 4. Объясняется вот тут в самом конце: docs.spring.io/spring-framework/reference/web/webmvc/mvc-controller/ann-methods/arguments.html По сути логика аналогична применению @ModelAttribute к аргументу NewProductPayload payload 5. Не понял вопроса
@user-007-1
@user-007-1 3 ай бұрын
Планируете ли делать разбор работы с хибернейтом? От вас бы было классно посмотреть
@shurik_codes
@shurik_codes 3 ай бұрын
Будет
@scalar3513
@scalar3513 2 ай бұрын
​@@shurik_codes 🎉🎉🎉🎉
@scalar3513
@scalar3513 2 ай бұрын
🔥🔥🔥🔥@@shurik_codes
@denisskyter4526
@denisskyter4526 3 ай бұрын
А если spring под капотом работает в многопотоке, то надо все синхронизировать и использовать потокобезопасные структуры данных?
@shurik_codes
@shurik_codes 3 ай бұрын
Да, и это касается не только Spring, но и вообще всех многопользовательских систем
@denisskyter4526
@denisskyter4526 3 ай бұрын
@@shurik_codes а синхронизировать нужно только структуры данных или еще много чего
@69ultrapotato
@69ultrapotato 3 ай бұрын
Посмотрел код в гитхабе. И мне показалось, что конечная задумка будет что-то вроде книги spring microservices in action. Я правильно понимаю?
@shurik_codes
@shurik_codes 3 ай бұрын
Я из этой книги взял кусок про Spring Cloud и Helm, остальное - авторское) Ну и если буду переснимать в будущем цикл, то Spring Cloud будет фундаментально переписан
@69ultrapotato
@69ultrapotato 3 ай бұрын
@@shurik_codes Круто, спасибо.
@denisskyter4526
@denisskyter4526 3 ай бұрын
А будет запись стрима... Я в школе просто буду
@shurik_codes
@shurik_codes 3 ай бұрын
Это не стрим, а премьера видео, так что да, будет
@rus-to1ht
@rus-to1ht 2 ай бұрын
Подскажите, пожалуйста, каким образом payload в методе createProduct() автоматически получил данные из формы. Разве мы не должны прописывать th:object в form, чтобы это работало?
@shurik_codes
@shurik_codes 2 ай бұрын
Если метод аннотированного контроллера принимает аргумент какого-то собственного типа, то это равносильно объявлению его с аннотацией @ModelAttribute, подробнее вот тут в самом конце: docs.spring.io/spring-framework/reference/web/webmvc/mvc-controller/ann-methods/arguments.html По сути создаётся экземпляр указанного класса и в него подставляются данные из запроса.
@rus-to1ht
@rus-to1ht 2 ай бұрын
Большое спасибо за разъяснение!@@shurik_codes
@ladamira3477
@ladamira3477 2 ай бұрын
Александр. Спасибо за уроки. у меня вопрос. Я совсем начинающая. у меня версия maven 3.9.4 и spring-boot-maven-plugin у меня красный и никак не хочет добавляться. что делать? поставить вашу версию maven поможет?
@shurik_codes
@shurik_codes 2 ай бұрын
1. Если версия плагина не указана через pluginManagement в текущем или родительском проекте, то её нужно указать явно 2. groupId должна быть org.springframework.boot, artifactId - spring-boot-maven-plugin Если даже после этого плагин выделен красным и речь идёт об IDEA, то нужно чистить кеш
@ladamira3477
@ladamira3477 2 ай бұрын
@@shurik_codes я там в каком-то уроке сделала обертку для maven. теперь не знаю как её убрать и еще когда создается проект через сайт. то главный модуль уже получается дочерний от spring-boot и модуль у меня не добавляется. только директория manager-app
@user-fr2dw3qd4v
@user-fr2dw3qd4v 2 ай бұрын
Если помню Вы где-то хотели в процессе видео объяснить, почему нужно обертку инта использовать вместо примитива, но так и не вернулись к этому. Если, конечно, я не пропустил.
@shurik_codes
@shurik_codes 2 ай бұрын
Ну вот как-то да, упустил этот момент. Это нужно, чтобы в 3 ролике корректно работал JPA)
@user-wm5xb5zo1s
@user-wm5xb5zo1s 2 ай бұрын
Интересно конечно на java делать веб-приложения, но на Golang будет выглядеть намного проще и быстрее
@shurik_codes
@shurik_codes 2 ай бұрын
Показываю, что знаю и умею
@kxeklom
@kxeklom 2 ай бұрын
Можно ли вместо Integer использовать класс UUID, вместо обозначения для поля id?
@shurik_codes
@shurik_codes 2 ай бұрын
Конечно можно
@partiec6065
@partiec6065 3 күн бұрын
Как напечатать перечеркнутое равно? Перебрал все: ≠, &#8800, U+2260, !=, (ne), ne, =!, , !==, Alt+8800. Не печатается. Спасибо проклятому автору за действительно крутое и полезное видео и будь он проклят. Добавь крипту для доната.
@shurik_codes
@shurik_codes Күн бұрын
Нужно включить поддержку лигатур в настройках шрифта, если речь об IDEA
@cubuanic
@cubuanic 2 ай бұрын
На 50:05 - там же PostMapping должен быть, разве нет?... А то получается два одинаковых GetMapping-а
@cubuanic
@cubuanic 2 ай бұрын
А.... Там не PostMapping Там должен был быть GetMapping, но на другой урл - в одном "{\\d+}", а во втором - "{\\d+}/edit"
@viewer_evgeniy
@viewer_evgeniy Ай бұрын
А подскажите, как вообще создавать такие многомодульные проекты в intellij? У вас в selmage-parent нет src и вложенных в него папок. Я когда пытаюсь создать пустой "родительский" maven проект, то у меня все равно эта папка появляется. Или вы просто вручную из parent их удаляете?
@shurik_codes
@shurik_codes Ай бұрын
Я создаю обычный maven-проект и удаляю src
@LuchkinDS
@LuchkinDS 2 ай бұрын
как-то можно сопоставить разные имена из формы и атрибуты payload?
@shurik_codes
@shurik_codes 2 ай бұрын
Да, при помощи методов с аннотацией @InitBinder
@mahotinigor
@mahotinigor 3 ай бұрын
А вы пользуетесь Jpa buddy ?
@shurik_codes
@shurik_codes 3 ай бұрын
Нет, я на практике с JPA вообще редко сталкиваюсь
@dmytro0228
@dmytro0228 2 ай бұрын
А что делать есть у меня .jar файл собирается, но после команды java -jar name.jar ничего не происходит? И соответственно localhost ничего не возвращает в браузере. Все остальные способы работают нормально.
@shurik_codes
@shurik_codes 2 ай бұрын
Возможно, jar собран либо без Spring Boot Maven Plugin, либо он не "толстый".
@dmytro0228
@dmytro0228 2 ай бұрын
@@shurik_codes спасибо большое
@denisskyter4526
@denisskyter4526 3 ай бұрын
Я так понял таких роликов будет много , да?
@shurik_codes
@shurik_codes 3 ай бұрын
Да, всего в цикле будет 22 ролика, полный список роликов я публиковал у себя в Telegram-канале и во вступительном ролике
@user-ub5yg5sf6z
@user-ub5yg5sf6z 19 күн бұрын
А почему для Id используется тип Integer?
@shurik_codes
@shurik_codes 19 күн бұрын
Чтобы ничего не переделывать для третьего ролика
@whereamibluesky3554
@whereamibluesky3554 Ай бұрын
можно было обойтись без класса NewProductPayload, сразу создавая Product?
@shurik_codes
@shurik_codes 21 күн бұрын
Теоретически - да, ничто не мешает так делать, но с точки зрения архитектуры это плохая идея. Структуры данных должны соответствовать намерениям и нести только тот набор свойств, которые могут быть заполнены пользователем.
@alexandersmidt9984
@alexandersmidt9984 Ай бұрын
На каком сайте? Ваш сайт почему то не работает(
@shurik_codes
@shurik_codes 21 күн бұрын
alexkosarev.name, в теории он может быть недоступен из-за пределов РФ
@dmitriyobidin6049
@dmitriyobidin6049 3 ай бұрын
Народ, где сейчас больше денег можно заработать на сеньорной позиции в срденем, golang или java?
@shurik_codes
@shurik_codes 3 ай бұрын
В среднем - на Go
@dmaberlin
@dmaberlin 9 күн бұрын
как добавить локали на другие языки сразу же?
@shurik_codes
@shurik_codes 9 күн бұрын
Создавать соответствующие файлы интернационализации
@alexandr6055
@alexandr6055 3 ай бұрын
Вау, спринг мвс с таймлифом в 2024 году?!😂 Надеюсь там и jsp будет?
@shurik_codes
@shurik_codes 3 ай бұрын
А почему нет? Оно всё вполне актуальное
@hackim2554
@hackim2554 3 ай бұрын
Так это же плейлист по основам, так что стоило ожидать. Тем более сам создатель канала опубликовал объявления об этой серии видео
@69ultrapotato
@69ultrapotato 3 ай бұрын
@@shurik_codes Актуальное может быть, но таймлиф и вообще шаблонизаторы - редко применимы в проде, только для специфических задач. Хотя похоже вы не захотели отвлекаться на spa-js-фреймворки. А спринг мвс типа не модный, в отличии от вебфлакса. Хотя на нем большинство даже новых сервисов пишут, потому что настоящая потребность в реактивных сервисах редка.
@tusman4ik
@tusman4ik 2 ай бұрын
Почему нет? Новичкам очень важно потрогать то, что они пишут, превратить их работы в реальный продукт. Не думаю, что js с 0 учить для такой цели рационально)
@087773016049
@087773016049 2 ай бұрын
Саша, привет. Спасибо, контент очень качественно подан. Но у меня вопрос. Зачем это нужно с практической точки зрения? Ведь же мы уже давно на бэке работаем с JSON, который прилетает с фронта. Я про шаблонизатор Thymeleaf. Спасибо заранее за ответ.
@shurik_codes
@shurik_codes 2 ай бұрын
Ну, как показывает практика, серверный рендеринг вполне активно используется, недаром он присутствует в том числе и в Angular, Vue и React
@087773016049
@087773016049 2 ай бұрын
@@shurik_codes Я к тому, что напрямую мы не используем thymeleaf или еще что, например jsp, на бэке. В практике реальной это не пригодится сейчас. Все очень стремительно меняется в наше время.
@LuchkinDS
@LuchkinDS 2 ай бұрын
product.setId(products.size() + 1);
@shurik_codes
@shurik_codes 2 ай бұрын
Можно и так, только в случае удаления товара не из конца списка возможно дублирование идентификаторов
@dmaberlin
@dmaberlin 2 ай бұрын
12:31:49.908 [restartedMain] ERROR org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter -- *************************** APPLICATION FAILED TO START *************************** Description: No spring.config.import property has been defined Action: Add a spring.config.import=configserver: property to your configuration. If configuration is not required add spring.config.import=optional:configserver: instead. To disable this check, set spring.cloud.config.enabled=false or spring.cloud.config.import-check.enabled=false.
@shurik_codes
@shurik_codes 2 ай бұрын
К этому ролику код с тэгом sc24ep01
@yasha64000
@yasha64000 2 ай бұрын
у меня @NotNull игнорировал и не выводил ошибку, если поле пустое. Поставил @NotEmpty
@shurik_codes
@shurik_codes 2 ай бұрын
@NotNull только проверяет на null, @NotEmpty проверяет, что строка состоит из 1+ символов
SC24EP02 Разработка REST-сервиса - Разработка проектов со Spring #java #spring #rest
1:06:16
Основы OAuth 2.0 и OpenID Connect #oauth #oidc #openidconnect
1:10:17
Уголок сельского джависта
Рет қаралды 6 М.
когда достали одноклассники!
00:49
БРУНО
Рет қаралды 3,6 МЛН
Cat story: from hate to love! 😻 #cat #cute #kitten
00:40
Stocat
Рет қаралды 15 МЛН
$10,000 Every Day You Survive In The Wilderness
26:44
MrBeast
Рет қаралды 60 МЛН
Клиент-серверная архитектура, API, HTTP, REST
49:41
IT Ментор | Сергей Жуков
Рет қаралды 10 М.
JWT авторизация. Основы JWT - механизма.
6:45
Хочу вАйти
Рет қаралды 2 М.
Андрей Когунь - Что в POM тебе моем?
57:52
JPoint, Joker и JUG ru
Рет қаралды 2,9 М.
Keycloak и Spring Security
37:37
Уголок сельского джависта
Рет қаралды 9 М.
когда достали одноклассники!
00:49
БРУНО
Рет қаралды 3,6 МЛН