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

Поделиться
HTML-код
  • Опубликовано: 15 ноя 2024

Комментарии • 172

  • @svyatoiambrozii
    @svyatoiambrozii 7 месяцев назад +4

    Очень хорошо, что вы стали записывать такие интересные ролики, которые не только зеленому новичку будут полезны. 🙂👍👍👍

  • @matthew_-cf6qo
    @matthew_-cf6qo 7 месяцев назад +12

    После всех других роликов по спринг - отбивались руки только. У вас же всё очень понятно и информативно, появилась вера в возможность освоения фреймворка😆. Буду продолжать смотреть ваш канал. Успехов вам!

  • @akalavan5395
    @akalavan5395 7 месяцев назад +2

    Классный, полезный ролик без воды. Все полтора часа полезной информации. Хотелось бы по больше фишек, которые применяются в реальной разработки

  • @ArtFanRamm
    @ArtFanRamm 7 месяцев назад +2

    Отличный контент Александр, продолжайте, не останавливайтесь) Ваши труды поддержал донатом, благодарю за уроки

  • @luckytima2315
    @luckytima2315 8 месяцев назад +7

    Братик вот хочешь верь или не верь, но то что ты делаешь это имба дикая !

  • @Devivl
    @Devivl 8 месяцев назад +12

    Александр - потрясающий преподаватель. Всегда очень приятно смотреть и слушать. Спасибо, Саш, что ты делаешь.

    • @eugenz2334
      @eugenz2334 8 месяцев назад +4

      Присоединяюсь, для меня тоже один из лучших преподавателей 🔥🔥

  • @DaOrNot
    @DaOrNot 7 месяцев назад +2

    Опыта работы программистом не имею, только обучаюсь длительное время.
    С данного видео получил больше полезной инфы чем от всяких лекций и многих других видео с ютуба.
    Очень благодарен за труд, твои видео как клад, очень рад что наткнулся.

  • @oleksandrhavryush9250
    @oleksandrhavryush9250 7 месяцев назад +2

    Большое спасибо. Очень информативно. Как раз сейчас начинаю писать свою дипломную работу по Спрингу и очень рад, что вас нашел.

  • @АлександрТяпкин-п2ц
    @АлександрТяпкин-п2ц 8 месяцев назад +9

    Отличное видео.
    Главное, чтобы запал не пропал у человека.
    Хотелось бы про деплой на прод увидеть - как сервис выбрать, как залить, как запустить, какие особенности и т.д. - в общих чертах.
    Поддержу комментаторов выше- автор очень понятно и интересно объясняет.
    Спасибо! Жду следующие выпуски.

    • @alexandr6055
      @alexandr6055 8 месяцев назад +2

      Не пропадет. Он уже отснял все 22 ролика, просто выкладывает поэтапно)

    • @АлександрТяпкин-п2ц
      @АлександрТяпкин-п2ц 8 месяцев назад

      @@alexandr6055 да, спасибо, я увидел его вступительный ролик.
      Темы хорошие озвучивает, посмотрю все обязательно.

  • @vital708
    @vital708 Месяц назад +1

    Спасибо вам за ваш труд!

  • @alexbern8656
    @alexbern8656 8 месяцев назад +5

    было бы интересно, в будущем, увидеть ролики про проектирование приложения в гексагональной архитектуре)

  • @Артем-х7п6с
    @Артем-х7п6с Месяц назад

    Очень полезно, спасибо вам большое за ролики! Видно, что подошли ответственно и с душой!

  • @o.sandman
    @o.sandman 8 месяцев назад +2

    Супер! Смотрится на одном дыхании, как детективная история, чем дальше - тем интереснее

  • @МаксМакс-ч8к
    @МаксМакс-ч8к 8 месяцев назад +3

    1,5 часа == ОГОНЬ!!! Спасибо , Александр!

  • @user-zm9on5rb8z
    @user-zm9on5rb8z 5 дней назад

    Супер. Спасибо. ❤

  • @BukaPuma
    @BukaPuma 3 месяца назад +1

    Давно учила Java core и очень боялась заходить в Spring. Спасибо, Александр, что помогли преодолеть страх перед новым направлением.

  • @MgsMen
    @MgsMen 8 месяцев назад +4

    Ждал этот видос больше, чем выход второй Дюны !!

  • @ровойт
    @ровойт 8 месяцев назад +2

    cпасибо большое вы как будто услышали наши пожелания

  • @danil2590
    @danil2590 6 месяцев назад +1

    Друг, хочу сказать тебе огромное спасибо. Очень тяжело найти свежие ролики, где всё досконально объясняют. Спасибо тебе огромное!

  • @maxnone2066
    @maxnone2066 8 месяцев назад +2

    Огромное спасибо автору. Отличное видео!

  • @alexer8442
    @alexer8442 8 месяцев назад +3

    Давненько не видел!! Очень рад, что не забросил дело)))

  • @НадеждаГринько-ю1ц
    @НадеждаГринько-ю1ц 8 месяцев назад +1

    Спасибо за то, что делитесь знаниями! Видео отличное, всё чётко и понятно)

  • @artyomzolotoverkhov8468
    @artyomzolotoverkhov8468 6 месяцев назад +1

    Класс, очень понятно и доступно, очень рад что нашел ваши видео вКонтакте, а теперь и здесь на канале! Однозначно подписка.

  • @fedotfeda
    @fedotfeda 5 месяцев назад +1

    Успехов Вам и спасибо за полезную информацию

  • @markostr
    @markostr 8 месяцев назад +1

    Спасибо ! Но нужно еще раз пересмотреть и попробывать своими ручками. Мне очень понравилось

  • @11kotikov
    @11kotikov 8 месяцев назад +1

    Офигенно! Спасибо большое, еще и настолько подробно и понятно!

  • @Boraldan
    @Boraldan 8 месяцев назад +2

    Спасибо! Будем просвещаться )

  • @ЕвгенийКоротков-д9к
    @ЕвгенийКоротков-д9к 8 месяцев назад +2

    Спасибо! ждем продолжения!

  • @spell3961
    @spell3961 8 месяцев назад +2

    Спасибо Вам огромное!!!))))
    Очень информативно, понятно и интересно
    Лучший канал по Джаве))))

  • @nigma933
    @nigma933 8 месяцев назад +1

    Спасибо вам огромное за урок!

  • @denisthestudent
    @denisthestudent 6 месяцев назад +2

    Спасибо за урок! Я недавно теорию по спрингу выучил, а тут практика годная с объяснением тонких моментов. Сохраняешь работягам кучу времени. Чисто кайф.
    P.S. Круто, что оставляешь моменты типа такого 1:26:51 было весело видеть твою реакцию на баг

  • @boginalex8563
    @boginalex8563 5 месяцев назад

    Александр спасибо за ваш труд, просто лучший.

  • @cheShireReal
    @cheShireReal 4 месяца назад +1

    Огромное спасибо вам за работу 👍

  • @bondjigar
    @bondjigar 4 месяца назад +1

    Огонь, смотрится круто и информативно. Спасибо!

  • @peachack7903
    @peachack7903 8 месяцев назад +1

    Огромное спасибо за труд! Было бы отлично добавить тайм-коды к видео:) Когда пытаюсь повторить на практике, часто возвращаюсь к разным частям разных уроков, пытаясь вспомнить где и что было рассказано и показано)

    • @shurik_codes
      @shurik_codes  8 месяцев назад

      Таймкоды будут, не успел их проставить

  • @goodvideobro
    @goodvideobro 8 месяцев назад +1

    Отличная серия роликов

  • @АндрейКотиков-й7з
    @АндрейКотиков-й7з 8 месяцев назад +1

    Это прекрасно! Мне как раз спринг освоить сильно захотелось день назад :)

  • @urantech
    @urantech 8 месяцев назад +2

    Спасибо за контент!

  • @alekseizhitenev6020
    @alekseizhitenev6020 5 месяцев назад +1

    спасибо) полезно и приятно слушать)

  • @vadimkharovyuk7660
    @vadimkharovyuk7660 8 месяцев назад +1

    большое спасибо _ побольше таких уроков +) лайк комент подписка

  • @Edu-wi3il
    @Edu-wi3il 8 месяцев назад +2

    Спасибо! Было интересно узнать про валидацию данных и интернализацию, а также что можно аннотировать @ModelAttribute методы. Как предложение, можно было кратко описать спецсимволы HTML в ходе повествования, либо привести ссылку на документацию, а также добавить пример подключения статических ресурсов CSS и JS, все таки это распространенный кейс

    • @shurik_codes
      @shurik_codes  7 месяцев назад

      Про валидацию уже был ролик на канале, про Thymeleaf будут

  • @pablik8387
    @pablik8387 8 месяцев назад +1

    Спасибо за видос, как всегда кайфанул

  • @Admin-qw7ss
    @Admin-qw7ss 8 месяцев назад +1

    Спасибо! Все крайне понятно

  • @alexbern8656
    @alexbern8656 8 месяцев назад +1

    как всегда хорошо, спасибо

  • @Hocorend
    @Hocorend 6 месяцев назад +1

    Спасибо, самое то, что мне сейчас нужно

  • @Boraldan
    @Boraldan 8 месяцев назад +2

    Интригующе.

  • @rainrainov4495
    @rainrainov4495 8 месяцев назад +1

    Добрый день! Что бы вы посоветовали использовать для интеграционного тестирования MockMvc, TestRestTemplate, WebTestClient, RestAssure возможно другой вариант. Для работы с WebTestClient обязательно добавлять webflux или в последних версиях Spring можно настроить и без webflux?

    • @shurik_codes
      @shurik_codes  8 месяцев назад

      По тесты будут 5 и 10 ролики, RestAssured выглядит перспективнее всех за счёт универсальности, но я использую либо MockMvc, либо WebTestClient. Да, для последнего нужен webflux

  • @olgapro2640
    @olgapro2640 8 месяцев назад +1

    Здравствуйте, у вас в плейлисте перепутаны первый и второй ролики

  • @viva8357
    @viva8357 8 месяцев назад +2

    Классный материал. Очень насыщенный и наглядный! Александр, в начале ролика Вы упомянули, что будете разрабатывать многомодульный проект, и каждый модуль будет развернут как отдельный микросервис. Хотелось бы узнать почему выбран именно такой подход? Если за альтернативу взять вариант с разработкой каждого приложения в отдельном проекте, то какие плюсы и минусы будут в сравнении с выбранным Вами подходом?

    • @shurik_codes
      @shurik_codes  8 месяцев назад

      Мне так проще всё держать в одном месте) В реальных условиях так не всегда удобно делать

  • @АртемАртём-п7р
    @АртемАртём-п7р 8 месяцев назад +1

    Спасибо за отличный контент!
    А что за расширение, которое показывает simple (0%) и что оно вообще делает?

  • @dmaberlin
    @dmaberlin 8 месяцев назад +1

    это настоящий подарок :D

  • @user-007-1
    @user-007-1 8 месяцев назад +1

    Используете ли инструменты ИИ для помощи с написанием кода, и с генерацией тестов?

    • @shurik_codes
      @shurik_codes  8 месяцев назад +1

      Нет, всё пишу сам

  • @denisskyter4526
    @denisskyter4526 8 месяцев назад +2

    А если spring под капотом работает в многопотоке, то надо все синхронизировать и использовать потокобезопасные структуры данных?

    • @shurik_codes
      @shurik_codes  8 месяцев назад +1

      Да, и это касается не только Spring, но и вообще всех многопользовательских систем

    • @denisskyter4526
      @denisskyter4526 8 месяцев назад

      @@shurik_codes а синхронизировать нужно только структуры данных или еще много чего

  • @dmitrelkin9256
    @dmitrelkin9256 8 месяцев назад +2

    Александр, вопрос: можно чуть подробней - для чего нужно что бы при компиляции сохранялись наименования аргументов методов? (об говорится в 20:00 по шкале времени)

    • @shurik_codes
      @shurik_codes  8 месяцев назад +4

      Чтобы не уточнять в @PathVariable, @RequestParam и других аналогичных аннотациях названия переменных. Например, если скомпилировать без сохранением названия аргументов такой код:
      @RequestMapping("/path/with/{variable}")
      String doSomething(@PathVariable String variable)
      то аргумент в рантайме будет называться arg0 (вроде), и при вызове метода будет выброшено исключение, т.к. в пути нет {arg0}

    • @dmitrelkin9256
      @dmitrelkin9256 8 месяцев назад

      @@shurik_codes Спасибо! вот такие объяснения очень ценны для чайников!

  • @alexandr6055
    @alexandr6055 8 месяцев назад +1

    скажите, а для чего при обращении в методах к сервисам или репозиториям которые инжектированы внутри класса вы используете конструкцию this.servise...? Что даёт здесь этот this?

    • @shurik_codes
      @shurik_codes  8 месяцев назад +1

      для собственного удобства, чтобы видеть, что обращение идёт к свойству экземпляра класса, а не к локальной переменной

  • @qaisarbaltabay
    @qaisarbaltabay 8 месяцев назад +2

    ждееем!!!!!

  • @rus-to1ht
    @rus-to1ht 8 месяцев назад +1

    Подскажите, пожалуйста, каким образом payload в методе createProduct() автоматически получил данные из формы. Разве мы не должны прописывать th:object в form, чтобы это работало?

    • @shurik_codes
      @shurik_codes  8 месяцев назад +1

      Если метод аннотированного контроллера принимает аргумент какого-то собственного типа, то это равносильно объявлению его с аннотацией @ModelAttribute, подробнее вот тут в самом конце: docs.spring.io/spring-framework/reference/web/webmvc/mvc-controller/ann-methods/arguments.html
      По сути создаётся экземпляр указанного класса и в него подставляются данные из запроса.

    • @rus-to1ht
      @rus-to1ht 8 месяцев назад

      Большое спасибо за разъяснение!@@shurik_codes

  • @romanovichihin2429
    @romanovichihin2429 6 месяцев назад +1

    коммент для продвижения

  • @Евгений-ы4м3ж
    @Евгений-ы4м3ж 4 месяца назад +1

    Замечательный материал. Огромное спасибо!
    почему Вы не настраивали диспатчер сервлет для шаблонизатора что бы указывать откуда брать шаблоны? Это делает Spring boot сам из коробки ?

    • @shurik_codes
      @shurik_codes  4 месяца назад

      да, в Spring Boot это уже сконфигурировано

  • @neyasbit
    @neyasbit 6 месяцев назад +2

    Бомба 💣💣💣

  • @СергейВласов-ь8я
    @СергейВласов-ь8я 5 месяцев назад

    Здравствуйте, спасибо за видео, подскажите, зачем делать 2 pom.xml файла?

    • @shurik_codes
      @shurik_codes  5 месяцев назад

      Каждый pom-файл отвечает за отдельный модуль, корневой - за весь проект в целом

  • @DimaJigalov
    @DimaJigalov 7 месяцев назад

    Простите, а чем обусловлен выбор Linked List в качестве структуры данных для продуктов в ин мемори репо?

  • @ladamira3477
    @ladamira3477 8 месяцев назад +1

    Александр. Спасибо за уроки. у меня вопрос. Я совсем начинающая. у меня версия maven 3.9.4 и spring-boot-maven-plugin у меня красный и никак не хочет добавляться. что делать? поставить вашу версию maven поможет?

    • @shurik_codes
      @shurik_codes  8 месяцев назад +1

      1. Если версия плагина не указана через pluginManagement в текущем или родительском проекте, то её нужно указать явно
      2. groupId должна быть org.springframework.boot, artifactId - spring-boot-maven-plugin
      Если даже после этого плагин выделен красным и речь идёт об IDEA, то нужно чистить кеш

    • @ladamira3477
      @ladamira3477 8 месяцев назад

      @@shurik_codes я там в каком-то уроке сделала обертку для maven. теперь не знаю как её убрать
      и еще когда создается проект через сайт. то главный модуль уже получается дочерний от spring-boot и модуль у меня не добавляется. только директория manager-app

  • @viewer_evgeniy
    @viewer_evgeniy 7 месяцев назад

    Здравствуйте! Спасибо за ваши видео. Подскажите пожалуйста, в чем разница между аннотацией @ModelAttribute и использованием модели в качестве параметра и соответственно добавлением атрибутов с помощью метода addAttribute.

    • @shurik_codes
      @shurik_codes  7 месяцев назад +1

      Оба данных подхода реализуют одно и то же действие - добавление атрибута в модель. @ModelAttribute позволяет написать метод, добавляющий атрибут в модель для всех запросов, обрабатываемых в контроллере. По сути уменьшается дублирование кода.

  • @denisskyter4526
    @denisskyter4526 8 месяцев назад +4

    А будет запись стрима... Я в школе просто буду

    • @shurik_codes
      @shurik_codes  8 месяцев назад +3

      Это не стрим, а премьера видео, так что да, будет

  • @kxeklom
    @kxeklom 8 месяцев назад

    21:48
    Присоединяюсь к комментариям ниже, действительно, смотреть ваши уроки одно удовольствие. Но у меня один вопрос. Почему мы помечаем стереотипными аннотациями саму реализацию интерфейса, а не сам интерфейс. Пометив аннотацией реализацию интерфейса, Spring создаст бины классов реализующих его?

    • @shurik_codes
      @shurik_codes  8 месяцев назад +2

      1. Если я ничего не путаю, то применение стереотипичных аннотаций к интерфейсам не регистрирует соответствующие компоненты в контексте приложения, а это ведёт к возникновению NoSuchBeanDefinitionException при попытке внедрения.
      2. При таком подходе интерфейс в какой-то мере становится зависимым от Spring, а я стараюсь делать интерфейсы независимыми, не смотря на всю свою любовь к Spring.
      Но вообще я на практике из стереотипных аннотаций использую только @Controller, остальные компоненты я предпочитаю конфигурировать руками в @Configuration/@Bean.

  • @duming3076
    @duming3076 6 месяцев назад +1

    谢谢老师,你厉害得很

  • @69ultrapotato
    @69ultrapotato 8 месяцев назад +1

    Посмотрел код в гитхабе. И мне показалось, что конечная задумка будет что-то вроде книги spring microservices in action. Я правильно понимаю?

    • @shurik_codes
      @shurik_codes  8 месяцев назад +3

      Я из этой книги взял кусок про Spring Cloud и Helm, остальное - авторское) Ну и если буду переснимать в будущем цикл, то Spring Cloud будет фундаментально переписан

    • @69ultrapotato
      @69ultrapotato 8 месяцев назад

      @@shurik_codes Круто, спасибо.

  • @ВасилийПетров-л1й
    @ВасилийПетров-л1й 8 месяцев назад +2

    велосипед не изобрел но под пивасик нормас!

  • @user-007-1
    @user-007-1 8 месяцев назад +2

    Планируете ли делать разбор работы с хибернейтом?
    От вас бы было классно посмотреть

    • @shurik_codes
      @shurik_codes  8 месяцев назад +2

      Будет

    • @scalar3513
      @scalar3513 8 месяцев назад

      ​@@shurik_codes
      🎉🎉🎉🎉

    • @scalar3513
      @scalar3513 8 месяцев назад

      🔥🔥🔥🔥@@shurik_codes

  • @vnazarenko
    @vnazarenko 4 месяца назад

    Александр, добрый день.
    А можно в двух словах про интерполяцию строк на 46:32? Что это, с чем едят - хотя бы какой-нибудь шортс. Либо подскажите что загуглить, а то я поискал и что-то всё не то находится. Спасибо.

    • @shurik_codes
      @shurik_codes  4 месяца назад

      Инлайнинг, оговорился
      alexkosarev.name/2017/08/08/thymeleaf-template-engine/ www.thymeleaf.org/doc/tutorials/3.1/usingthymeleaf.html#inlining

    • @vnazarenko
      @vnazarenko 4 месяца назад

      @@shurik_codes Спасибо!

  • @СергейЗаря-х9ь
    @СергейЗаря-х9ь 3 месяца назад

    Спасибо большое за Ваш труд. Возник вопрос, в связи с последними событиями в РФ ютуб стал не надежным. На других площадках не рассматриваете возможность размещения? Не хотелось бы утром встать а доступ закрыт...

    • @shurik_codes
      @shurik_codes  3 месяца назад

      Внимательно смотрим на описание под видео и вкладку "Сообщество". Все ролики продублированы на площадках VK, Дзен, Rutube и Boosty

    • @СергейЗаря-х9ь
      @СергейЗаря-х9ь 3 месяца назад

      Благодарю, почему то пропустил это

  • @9-260
    @9-260 8 месяцев назад

    Спасибо за видео!
    Но у меня в процессе просмотра возникло пару вопросов:
    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  7 месяцев назад

      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. Не понял вопроса

  • @НиколайБалясников-щ5л
    @НиколайБалясников-щ5л 8 месяцев назад

    Спасибо, что выпускаешь свои ролики, многие моменты из твоих роликов помогают улучшить мой код. Такой вопрос: Почему ты в подавляющей части роликов используешь систему сборки maven, а не gradle?

    • @shurik_codes
      @shurik_codes  8 месяцев назад +2

      Я использую во всех роликах maven, потому что привык)

  • @mahotinigor
    @mahotinigor 8 месяцев назад

    А вы пользуетесь Jpa buddy ?

    • @shurik_codes
      @shurik_codes  8 месяцев назад

      Нет, я на практике с JPA вообще редко сталкиваюсь

  • @ArtFanRamm
    @ArtFanRamm Месяц назад

    Насколько необходима потребность создавать интерфейс сервисов? Часто ли это применяется на практике при использовании mvc?

    • @shurik_codes
      @shurik_codes  Месяц назад +1

      Используется регулярно для ослабления связанности между компонентами + проще проще прокси писать

    • @ArtFanRamm
      @ArtFanRamm Месяц назад

      @@shurik_codes Понял, спасибо. Просто довольно много смотрел видеоуроков/курсов, там обычно создаются интерфейсы репозиториев, а сервисы почему-то без интерфейсов.

  • @kxeklom
    @kxeklom 8 месяцев назад

    Можно ли вместо Integer использовать класс UUID, вместо обозначения для поля id?

  • @АнатолийГО-ж2п
    @АнатолийГО-ж2п 7 месяцев назад

    Интересно конечно на java делать веб-приложения, но на Golang будет выглядеть намного проще и быстрее

    • @shurik_codes
      @shurik_codes  7 месяцев назад +1

      Показываю, что знаю и умею

  • @viewer_evgeniy
    @viewer_evgeniy 6 месяцев назад

    А подскажите, как вообще создавать такие многомодульные проекты в intellij? У вас в selmage-parent нет src и вложенных в него папок. Я когда пытаюсь создать пустой "родительский" maven проект, то у меня все равно эта папка появляется. Или вы просто вручную из parent их удаляете?

    • @shurik_codes
      @shurik_codes  6 месяцев назад

      Я создаю обычный maven-проект и удаляю src

  • @Дмитрий-ю9к3г
    @Дмитрий-ю9к3г 8 месяцев назад

    Если помню Вы где-то хотели в процессе видео объяснить, почему нужно обертку инта использовать вместо примитива, но так и не вернулись к этому. Если, конечно, я не пропустил.

    • @shurik_codes
      @shurik_codes  8 месяцев назад

      Ну вот как-то да, упустил этот момент. Это нужно, чтобы в 3 ролике корректно работал JPA)

  • @vahemuradyan7258
    @vahemuradyan7258 2 месяца назад +1

    прошу тебя покажи как палучил изночалний pom.xml file в selmag-parent-sc24

    • @shurik_codes
      @shurik_codes  Месяц назад

      Просто создал новый Maven-проект

  • @partiec6065
    @partiec6065 5 месяцев назад

    Как напечатать перечеркнутое равно? Перебрал все: ≠, ≠, U+2260, !=, (ne), ne, =!, , !==, Alt+8800. Не печатается.
    Спасибо проклятому автору за действительно крутое и полезное видео и будь он проклят. Добавь крипту для доната.

    • @shurik_codes
      @shurik_codes  5 месяцев назад +1

      Нужно включить поддержку лигатур в настройках шрифта, если речь об IDEA

  • @3am6ep
    @3am6ep 5 месяцев назад

    Очень полезное видео.
    Только вот если в валидации я убираю аннотацию Size, оставляя только NotNull, то могу создавать объекты без названий
    Импорты все из одного пакета(

    • @shurik_codes
      @shurik_codes  5 месяцев назад

      Всё логично

    • @3am6ep
      @3am6ep 5 месяцев назад

      @@shurik_codes Я думал NotNull для того чтобы мы не могли сохранить значение вообще без символов, но видимо я не правильно понимаю(

    • @shurik_codes
      @shurik_codes  5 месяцев назад

      @@3am6ep @NotNull только для проверки на null

  • @LuchkinDS
    @LuchkinDS 7 месяцев назад

    как-то можно сопоставить разные имена из формы и атрибуты payload?

    • @shurik_codes
      @shurik_codes  7 месяцев назад

      Да, при помощи методов с аннотацией @InitBinder

  • @whereamibluesky3554
    @whereamibluesky3554 6 месяцев назад

    можно было обойтись без класса NewProductPayload, сразу создавая Product?

    • @shurik_codes
      @shurik_codes  6 месяцев назад

      Теоретически - да, ничто не мешает так делать, но с точки зрения архитектуры это плохая идея. Структуры данных должны соответствовать намерениям и нести только тот набор свойств, которые могут быть заполнены пользователем.

  • @cubuanic
    @cubuanic 7 месяцев назад

    На 50:05 - там же PostMapping должен быть, разве нет?...
    А то получается два одинаковых GetMapping-а

    • @cubuanic
      @cubuanic 7 месяцев назад

      А....
      Там не PostMapping
      Там должен был быть GetMapping, но на другой урл - в одном "{\\d+}", а во втором - "{\\d+}/edit"

  • @Happy-s8l1c
    @Happy-s8l1c 5 месяцев назад

    Всё здорово, всё полезно, но почему ты не показал с нуля как создавать много модульный проект, я не понял

    • @shurik_codes
      @shurik_codes  Месяц назад

      создаёшь новый проект, удаляешь директорию src, создаёшь модуль в проекте... всё

  • @dmytro0228
    @dmytro0228 8 месяцев назад

    А что делать есть у меня .jar файл собирается, но после команды java -jar name.jar ничего не происходит? И соответственно localhost ничего не возвращает в браузере. Все остальные способы работают нормально.

    • @shurik_codes
      @shurik_codes  7 месяцев назад

      Возможно, jar собран либо без Spring Boot Maven Plugin, либо он не "толстый".

    • @dmytro0228
      @dmytro0228 7 месяцев назад

      @@shurik_codes спасибо большое

  • @alexandersmidt9984
    @alexandersmidt9984 6 месяцев назад

    На каком сайте? Ваш сайт почему то не работает(

    • @shurik_codes
      @shurik_codes  6 месяцев назад

      alexkosarev.name, в теории он может быть недоступен из-за пределов РФ

  • @denisskyter4526
    @denisskyter4526 8 месяцев назад +1

    Я так понял таких роликов будет много , да?

    • @shurik_codes
      @shurik_codes  8 месяцев назад

      Да, всего в цикле будет 22 ролика, полный список роликов я публиковал у себя в Telegram-канале и во вступительном ролике

  • @yoxaron
    @yoxaron 4 месяца назад +1

    А зачем везде писать this, если нет конфликтов имён?

    • @shurik_codes
      @shurik_codes  4 месяца назад +1

      Привычка, чтобы сразу было видно, где идёт обращение к свойствам класса, а где - к локальным переменным

  • @dmaberlin
    @dmaberlin 5 месяцев назад

    как добавить локали на другие языки сразу же?

    • @shurik_codes
      @shurik_codes  5 месяцев назад

      Создавать соответствующие файлы интернационализации

  • @ЁК-МАКАРЁК-я4щ
    @ЁК-МАКАРЁК-я4щ 3 месяца назад +1

    Я ведь правильно понял, что NewProductPayload это DTO?

    • @shurik_codes
      @shurik_codes  3 месяца назад

      да

    • @СергейЗаря-х9ь
      @СергейЗаря-х9ь 3 месяца назад

      ​@@shurik_codes это понятно что Вы юзаете вместо dto record, а почему? В чем причина?

  • @dmitriyobidin6049
    @dmitriyobidin6049 8 месяцев назад

    Народ, где сейчас больше денег можно заработать на сеньорной позиции в срденем, golang или java?

    • @shurik_codes
      @shurik_codes  8 месяцев назад

      В среднем - на Go

  • @alexandr6055
    @alexandr6055 8 месяцев назад +3

    Вау, спринг мвс с таймлифом в 2024 году?!😂 Надеюсь там и jsp будет?

    • @shurik_codes
      @shurik_codes  8 месяцев назад +2

      А почему нет? Оно всё вполне актуальное

    • @hackim2554
      @hackim2554 8 месяцев назад +2

      Так это же плейлист по основам, так что стоило ожидать. Тем более сам создатель канала опубликовал объявления об этой серии видео

    • @69ultrapotato
      @69ultrapotato 8 месяцев назад

      @@shurik_codes Актуальное может быть, но таймлиф и вообще шаблонизаторы - редко применимы в проде, только для специфических задач. Хотя похоже вы не захотели отвлекаться на spa-js-фреймворки. А спринг мвс типа не модный, в отличии от вебфлакса. Хотя на нем большинство даже новых сервисов пишут, потому что настоящая потребность в реактивных сервисах редка.

    • @tusman4ik
      @tusman4ik 8 месяцев назад

      Почему нет? Новичкам очень важно потрогать то, что они пишут, превратить их работы в реальный продукт. Не думаю, что js с 0 учить для такой цели рационально)

  • @odtour
    @odtour Месяц назад

    32:38
    К чему такие сложности? Почему нельзя написать так: data-th-href="@{/catalogue/products/${product.id}}"

  • @LuchkinDS
    @LuchkinDS 7 месяцев назад

    product.setId(products.size() + 1);

    • @shurik_codes
      @shurik_codes  7 месяцев назад

      Можно и так, только в случае удаления товара не из конца списка возможно дублирование идентификаторов

  • @dmaberlin
    @dmaberlin 8 месяцев назад

    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  8 месяцев назад

      К этому ролику код с тэгом sc24ep01

  • @yasha64000
    @yasha64000 7 месяцев назад +2

    у меня @NotNull игнорировал и не выводил ошибку, если поле пустое. Поставил @NotEmpty

    • @shurik_codes
      @shurik_codes  7 месяцев назад

      @NotNull только проверяет на null, @NotEmpty проверяет, что строка состоит из 1+ символов