Создание REST приложения с использованием Spring

Поделиться
HTML-код
  • Опубликовано: 23 апр 2018
  • В данном видео мы создадим REST приложение с использованием технологий:
    Java,
    Spring (Data, Boot),
    MySQL
    Maven,
    Lombok
    Ссылка на исходный код проекта:
    github.com/proselytear/custom...

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

  • @olegsh91
    @olegsh91 6 лет назад +16

    Наконец-то! Как же долго я ждал нового видео на этом канале! Надеюсь видео подобного формата будут выходить чаще!

    • @EugeneSuleimanov
      @EugeneSuleimanov  6 лет назад +5

      Oleg Shentsev постараюсь выкладывать немного чаще )

    • @4val0v
      @4val0v 6 лет назад +2

      Большое спасибо, ты лучший !

    • @4val0v
      @4val0v 5 лет назад

      Планируются ли еще видео в ближайшем времени ??

  • @SergeyKhaylov
    @SergeyKhaylov 6 лет назад +1

    Спасибо. Начал путь в Spring с вашего видеотуториала!

  • @Johnnywas87
    @Johnnywas87 5 лет назад +3

    Вы помогаете нам развиваться! Спасибо!

  • @dmitrymukhin9458
    @dmitrymukhin9458 6 лет назад +6

    Ого, Евгений. Давно вас не было! Вашы видео и ваш сайт - это большой вклад в русское программирование. Спасибо вам.

    • @EugeneSuleimanov
      @EugeneSuleimanov  6 лет назад

      Дима Мухин спасибо за отзыв

  • @ayrat11
    @ayrat11 4 года назад +1

    Огромная благодарность что весь код пишется, а не копипастится из других проектов! Так намного понятнее что для чего.

  • @yuriynesterenko9280
    @yuriynesterenko9280 6 лет назад +4

    Мужик -- большое человеческое спасибо за то, что ты не только пишешь код, но и объясняешь что он делает. Хоть что-то в голове откладывается.

  • @ElektroDrrrEL
    @ElektroDrrrEL 5 лет назад +1

    Огромное спасибо за урок - очень круто все разложено!

  • @maxmaroff260
    @maxmaroff260 4 года назад

    Спасибо за урок!!! Очень доступно объясняете!!!

  • @user-tu4uz8hn3g
    @user-tu4uz8hn3g 3 года назад +6

    Дядь, спасибо за видео! С корешем решили в 30 лет стать разрабами, твои видео очень ценны)

    • @Mastervmf
      @Mastervmf 2 года назад +1

      и как успехи?

    • @user-wh8ye3id7s
      @user-wh8ye3id7s 2 года назад +1

      @@Mastervmf Снова на мойке работают оба

    • @hankie5
      @hankie5 2 года назад +1

      @@user-wh8ye3id7s пхахах

  • @RuslanZinovyev
    @RuslanZinovyev 6 лет назад +1

    Огромное спасибо за видео по REST.

    • @EugeneSuleimanov
      @EugeneSuleimanov  6 лет назад +1

      Ruslan Zinovyev спасибо за отзыв )

  • @user-mi8fc9ld7d
    @user-mi8fc9ld7d 6 лет назад +2

    Великолепно! Очень полезно, лучшие видео по spring в СНГ. И объясняете даже лучше чем в видео о CRUID. Хотя и там достаточно хорошо объясняли. Не согласен с людьми, которые бубнят, что вы отправляете к документации. Я считаю, пары информативных слов в стиле "эта зависимость поможет нам автоматически генерировать геттеры, сеттеры toString() и красиво логировать" это идеальное краткое содержание. Спасибо ещё раз, надеюсь ещё будут видео по Spring, Maven, ORM и тп

  • @user-if2er6sl6e
    @user-if2er6sl6e 4 года назад

    Спасибо, мужик. Прям очень хорошо рассказал. Помогло в работе, спасиб)))

  • @user-qu6mb9il6w
    @user-qu6mb9il6w 5 лет назад +2

    Отлично! Спасибо!

  • @sergeygasak484
    @sergeygasak484 6 лет назад +32

    Спасибо за видео! Только, ПОЖАЛУЙСТА, делайте шрифт крупнее или уменьшите разрешение экрана. Смотреть на ноутбуке 15' крайне неудобно. Пожалейте наши глаза)

    • @EugeneSuleimanov
      @EugeneSuleimanov  6 лет назад +8

      Sergey Gasak спасибо за отзыв. По поводу шрифта - уже говорили - учту на будущее )

    • @RenderDragon
      @RenderDragon Год назад

      @AniBot ++)

  • @mykolapetriv2017
    @mykolapetriv2017 6 лет назад +1

    Спасибо за видео!

  • @alexsnowden7077
    @alexsnowden7077 6 лет назад

    Спасибо Евгений! Уже если честно не думал что будут новые видео. Да и на сайте статьи перестали выходить.

    • @EugeneSuleimanov
      @EugeneSuleimanov  6 лет назад

      Alex Snowden теперь постараюсь выкладывать чаще. Спасибо за отзыв

  • @user-zg2gd8gl8o
    @user-zg2gd8gl8o 3 года назад

    Спасибо! Добрейшего тебе мира!

  • @violetjellyfish2089
    @violetjellyfish2089 3 года назад

    Большое спасибо за видео!

  • @102hem
    @102hem 6 лет назад

    спасибо, конечно если бы почаще свежих видео))

  • @haimlvov10
    @haimlvov10 4 года назад

    *СПАСИБО ВАМ БОЛЬШОЕ!!!!!*

  • @olegyaremachenko835
    @olegyaremachenko835 5 лет назад +3

    СПАСИБО!!!!!!!

  • @romanlezhnin9252
    @romanlezhnin9252 5 лет назад

    Огромное вам спасибо

  • @user-fw5ud9xc4n
    @user-fw5ud9xc4n 4 года назад

    Большое спасибо

  • @Krainiiserver
    @Krainiiserver 5 лет назад +1

    Спасибо

  • @victormog
    @victormog 6 лет назад +22

    У меня *JpaRepository* реализует метод *getOne(Long),* а не _findOne(Long),_ как у Вас...
    И *deleteById(Long),* вместо _delete(Long),_ соответственно.
    Я ставил зависимость *spring-boot-starter ver.:2.0.2.RELEASE*
    Правда, в этом случае - ошибка при компиляции, связанная с логированием - в аpplication.properties надо прописать что-то вроде: *logging.level.com.mvictorl = INFO* (вместо logging.level. = INFO)

    • @user-fr2dw3qd4v
      @user-fr2dw3qd4v 3 года назад

      Можно небольшой комментарий по поводу logging.level.com.mvictorl = INFO? Как понять, что здесь писать надо?

    • @victormog
      @victormog 3 года назад

      @@user-fr2dw3qd4v
      На сколько я помню, *logging.level.* - это имя свойства, т.е. уровень логирования, а *com.mvictorl* - это пространство имён, к которому этот уровень применяется, он у каждого приложения свой (по-моему это ArtifactId при создании приложения). Ну, и *INFO* - это значение уровня логирования, то, что будет в логах (ERROR, WARNING, INFO и т.д.)
      howtodoinjava.com/spring-boot2/logging/logging-application-properties/

  • @maxmara4551
    @maxmara4551 4 года назад

    Я только начинаю учить спринг и понял всё процентов на 70%
    Первое, что я сказал по завершению видео: ах*еть
    Круто, спасибо!

  • @alexkhramovich5652
    @alexkhramovich5652 2 года назад

    Евгений топ! Спасибо!

  • @user-sj2qn6dr7g
    @user-sj2qn6dr7g 4 года назад

    Евгений хорошее обучающее видео.Узнал что-то новенького из вашего видео. Сейчас как раз надо написать приложение наподобие,только чуть посложнее.
    Может что-то сможете подсказать - нужно создать функционал уведомлений о предстоящем мероприятии по наступлению
    даты события.Сама логика понятна - нужно сравнивать будет дату мероприятия с текущей датой,и при положительном результате выдавать уведомления.А вот что имеется в виду - функционал уведомлений???

  • @ASD17r
    @ASD17r 6 лет назад +1

    Замечательное видео. Евгений, не могли бы вы осветить тему авторизации и разграничения доступа в REST.

    • @EugeneSuleimanov
      @EugeneSuleimanov  6 лет назад +1

      Спасибо. Эта тема заслуживает отдельного видео - планирую записать в скором времени.

    • @4val0v
      @4val0v 5 лет назад

      ждем

  • @user-gu3wf4vo1x
    @user-gu3wf4vo1x 5 лет назад +1

    Отличное видео, на многое открыло глаза)) Вот только не понял как вы связывали созданные скрипты БД с Database ???

    • @EugeneSuleimanov
      @EugeneSuleimanov  5 лет назад +1

      Эта логика ложится на liquibase.
      Т.е. конфигурируем, запускаем, а liquibase делает всю работу

  • @pseudouser55
    @pseudouser55 4 года назад

    Спасибо за проделанную работу!!
    Но есть вопрос: зачем отдавать клиенту 404 если данные в базе не найдены по id.
    404 это же запрос несуществующего роута??

  • @user-rl2zg1oq8l
    @user-rl2zg1oq8l 4 года назад

    Капитан!!!

  • @user-ub3ph5uj3l
    @user-ub3ph5uj3l 4 года назад +3

    Добрый день!
    Видео очень классное, есть вопрос такой, на понимание, не совсем понял принцип работы, может он покажется простым и глупым, но все же:). Занимаюсь изучением фреймворка Spring. В контроллере(у вас это CustomerRestController) инициализируется интерфейс сервиса(CustomerService) как Автовайред, а не ссылка на класс реализующий методы итерфейса(CustomerServiceImpl). Я правильно понял , что это логика Spring такая, то есть Spring находит класс где есть имплементация методов CustomerService с бизнес-логикой, и при обращении к методам CustomerService из контроллера , находит имеющуюся в CustomerServiceImpl реализацию методов в контексте спринга?

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 года назад +3

      Добрый день, Алмаз. Да, все верно, именно так.
      Это и есть базовый функционал спринга. Я бы рекомендовал крайне детально изучить этот механизм.
      proselyte.net/tutorials/spring-tutorial-full-version/dependency-injection/
      proselyte.net/tutorials/spring-tutorial-full-version/autowiring/
      Надеюсь, ответ будет полезен.

    • @user-ub3ph5uj3l
      @user-ub3ph5uj3l 4 года назад +2

      @@EugeneSuleimanov Евгений, спасибо за ответ!

  • @user-sb3ds9om4c
    @user-sb3ds9om4c 4 года назад +1

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

  • @vsb330034
    @vsb330034 6 лет назад

    Отличное видео!... Прозвучала фраза, что используется томкат, но в самом видео про него вроде как ничего нет... его spring-boot подтягивает или как?

    • @EugeneSuleimanov
      @EugeneSuleimanov  6 лет назад

      Владимир Баранов да, в помнике есть зависимость стартера томката. Спасибо за отзыв)

  • @fvladimir8064
    @fvladimir8064 5 лет назад +1

    Спасибо, очень хороший урок. Евгений пропала связь с вами в Skype.

  • @oksanamekh2653
    @oksanamekh2653 5 лет назад +1

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  5 лет назад

      Да, уже видел этот момент - в будущем обязательно учту при записи, спасибо

  • @Yeuppi
    @Yeuppi 2 года назад

    дошел до последнего но так и не понял (видео норм ток лучше бы побольше разъяснений про аннтации типо @REquestBody,PathVariable и прочее может remastered Создание REST приложения с использованием Spring ?)

  • @ekaterina997
    @ekaterina997 5 лет назад +1

    Запилите видео, как теперь правильно запилить клиент для всего этого на спринге, пожалуйста. А то у меня только куча говнокода выходит)

    • @user-jf2ic3up1k
      @user-jf2ic3up1k 3 года назад

      Клиент на спринге, как это?

    • @ekaterina997
      @ekaterina997 3 года назад

      @@user-jf2ic3up1k не бери в голову. Я пьяная наверное была, когда этот коммент писала)

  • @arsenyvinogradow2474
    @arsenyvinogradow2474 3 года назад

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

  • @4val0v
    @4val0v 5 лет назад

    В _BaseEntity_ класс должен быть *_public_* или *_abstract_* ?
    И какая разница между *_@MappedSuperclass_* и *_@Inheritance_* ?

  • @user-ys6ki2pf2c
    @user-ys6ki2pf2c 4 года назад

    Большое спасибо за видео! А вы не подскажете, почему при инициализации бд, инициализируется только схема, а данные в бд не записываются?

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 года назад

      Спасибо за отзыв.
      Это странно, т.е. есть чендж сет, в файле. В нем указано, что мы вставляем данные. Приложение запускается без ошибок, но данные на записаны?

    • @user-ys6ki2pf2c
      @user-ys6ki2pf2c 4 года назад

      @@EugeneSuleimanov да, у меня есть два дампа базы данных postgresql: схема и данные. Все таблицы из схемы создаются, но не заполняются данными.

  • @user-pd7kk1wi7r
    @user-pd7kk1wi7r 2 года назад

    Всем у кого возникают вопросы во время просмотра видео. Рекомендую вдумчиво и неспеша изучить руководство по спринг от автора данного видео - proselyte.net/tutorials/spring-tutorial-full-version/introduction/ а так же - мой вам совет, смотрите видео с паузами, возвращайтесь к просмотренному, делайте выписки и гуглите, что непонятно по аннотациям или другим попутным вопросам. Таким образом, все постигается и картина становится ясной.

  • @user-ys6ki2pf2c
    @user-ys6ki2pf2c 4 года назад

    Большое спасибо за видео. Подскажите пожалуйста, почему метод updateCustomer идентичен методу saveCustomer?

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 года назад

      Спасибо за отзыв )
      Здесь идентичен, но логика может меняться. Поэтому используем 2 отдельных метода

  • @andreybox8915
    @andreybox8915 3 года назад +2

    Спасибо за урок. То, что нужно. Но у меня проблемка: на 17:19 строка return customerRepository.findOne(id); выдаёт ошибку - может возрващаться null, и подсказка синтаксиса пишет, что customerRepository.findOne(id) возрващает НЕ Customer, а Optional. Не очень понимаю, почему у вас не так - возможно какая-то версия спринга отличается... И как решать эту проблему именно правильно тоже не очень понимаю, ибо не хочу я тут видеть Optional, мне нормальный объект нужен :) У меня в проекте Java 1.8, spring-data-jpa 2.1.10RELEASE, spring 5.1.10.RELEASE. UPD: Нашёл на просторах инета такое решение: .findById(id).orElse(null);

    • @EugeneSuleimanov
      @EugeneSuleimanov  3 года назад

      Спасибо за отзыв! Да, это верное решение для работы с Optional

  • @for_whom_the_bell_tolls
    @for_whom_the_bell_tolls 5 лет назад

    Отличный урок! Я только с update не понял, мы на вход в запросе никакого id не даем, чем оно отличается от добавления кастомера обычным POST, кого мы апдейтим?

    • @EugeneSuleimanov
      @EugeneSuleimanov  5 лет назад +1

      Спасибо за отзыв, Филипп. В update мы передаём весь объект вместе с id. Spring Data сам понимает, что сущность уже есть в БД и изменяет уже существующую, а не создаёт новую. Примерно, так.

    • @for_whom_the_bell_tolls
      @for_whom_the_bell_tolls 5 лет назад

      Спасибо, разъяснили.

    • @sergk7075
      @sergk7075 4 года назад

      @@EugeneSuleimanov Спасибо, за обьяснение а , UriComponentsBuilder componentsBuilder в методе Update зачем , он ведь все равно не используеться?

  • @miraclechina1301
    @miraclechina1301 5 лет назад +1

    Вы поменяли комп*ютер?

  • @denisn2812
    @denisn2812 6 лет назад

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  6 лет назад

      Denis N спасибо за отзыв. Учту при создании новых видео. Постараюсь делать более читабельно.

  • @wetergshsghsfghsfh
    @wetergshsghsfghsfh 4 года назад

    @PutMapping, для чего вы передали UriComponentsBuilder в качестве параметра? Вы же его не используете. В чем суть?

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 года назад +1

      Здесь это избыточно и можно было обойтись без него. Просто в демонстрационных целях, но, вероятнее всего, не стоило этого делать - вводит в заблуждение.

  • @user-sb3ds9om4c
    @user-sb3ds9om4c 4 года назад

    В baseEntity описываются общие свойства которые мы можем унаследовать для таблицы, мы так делаем чтобы проще было управлять таблицей и не загромождать класс Customer или для чего то ещё?

  • @kruvv
    @kruvv 4 года назад

    Здравствуйте. За видео огромный респект. Приложение запустилось хоть и не с первого раза, но у меня возник вопрос по методу updateCustomer. Проверяя его методом PUT в Posman у меня пользователь не обновляется, а записывается еще один новый с измененными полями. Выдает метод GET. Да и в логике метода я не вижу ни где удаления старого customera. Может я что то упустил?

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 года назад

      Добрый вечер.
      Спасибо за отзыв. По поводу вашего вопроса - передаёте ли вы id кастомера в теле запроса?
      В идеале - скиньте, пожалуйста, cURL

  • @4val0v
    @4val0v 5 лет назад +1

    Можно ли использовать одну аннотацию _lombok_ *@Data* вместо *@Getter, @Setter, @ToString* и *@EqualsAndHashCode* в Entity класах ?

    • @EugeneSuleimanov
      @EugeneSuleimanov  5 лет назад

      Нужно ) Это только для видео, чтобы было максимально понятно, что здесь происходит

  • @sviatoslavnaida89
    @sviatoslavnaida89 6 лет назад

    Спасибо, очень хороший урок. Но ви добавили гедер и билдер, но так и не исппользовали их, можно еще маленьеий урок с более сложними запросами и использованием гедера и билдера.

    • @EugeneSuleimanov
      @EugeneSuleimanov  6 лет назад

      Sviatoslav Naida не могли бы вы уточнить - тогда смогу в будущем записать такое видео

    • @sviatoslavnaida89
      @sviatoslavnaida89 6 лет назад +1

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

    • @sviatoslavnaida89
      @sviatoslavnaida89 6 лет назад

      И как кеш использовать правильно

  • @LuchkinDS
    @LuchkinDS 6 лет назад

    добрый день. а в мире java и в частности spring, для версионирования db, миграции использовать не принято?

    • @EugeneSuleimanov
      @EugeneSuleimanov  6 лет назад

      Дмитрий Лучкин добрый день.
      Да, конечно. В видео сказано, что в реальном проекте мы бы использовали миграции liquibase, flyware и т.д.

  • @denisn2812
    @denisn2812 6 лет назад

    Прошу прощения за назойливость, но не совсем понятно зачем нам нужен параметр builder в методе updateCustomer. В самом методе он нигде не задействован. Это первый вопрос. И второй вопрос. Нужно ли выносить создание HttpHeadrs на уровень класса, или данное дублирование обусловлено созданием своего Хэдэра при каждом запросе. СПС

    • @EugeneSuleimanov
      @EugeneSuleimanov  6 лет назад

      Denis N в данном случае он не нужен. По поводу хедера - все верно - мы контролируем создание хедера при каждом запросе.

    • @denisn2812
      @denisn2812 6 лет назад

      спасибо

  • @denisn2812
    @denisn2812 6 лет назад

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  6 лет назад

      Denis N это обычная практика. Практически, во всех проектах, где я работал, применялся подобный подход.

    • @denisn2812
      @denisn2812 6 лет назад

      спасибо за ответ.

  • @victormog
    @victormog 6 лет назад +1

    Не совсем понял в конце по поводу использования базы данных "в реальном приложении"...
    39:58

    • @EugeneSuleimanov
      @EugeneSuleimanov  6 лет назад +1

      Есть специальные средства для миграции БД. Они дают возможность отслеживать что, когда и кем было изменено в БД.

    • @victormog
      @victormog 6 лет назад

      Eugene Suleimanov
      Можно названия, чтобы почитать хотя бы? Спасибо!

    • @EugeneSuleimanov
      @EugeneSuleimanov  6 лет назад +2

      www.liquibase.org/ и flywaydb.org/ - это наиболее популярные

    • @victormog
      @victormog 6 лет назад

      Eugene Suleimanov
      Спасибо большое!

  • @rasZam
    @rasZam 2 года назад

    В чем суть деления на service и на repository? Если делать методы в repository что будет? и на что это влияет?

    • @EugeneSuleimanov
      @EugeneSuleimanov  2 года назад

      Обычно, репо отвечает за работу с БД, а сервис - за бизнес логику приложения.

    • @rasZam
      @rasZam 2 года назад

      @@EugeneSuleimanov спасибо. Так строится вся ПО?

  • @TheMixer91
    @TheMixer91 Год назад

    Хоспаде, откуда такая любовь к спринг бут? Без бута не справился бы?

    • @EugeneSuleimanov
      @EugeneSuleimanov  Год назад +1

      Без boot нужно думать и быть умным, а я так - погулять вышел…

  • @RuslanZinovyev
    @RuslanZinovyev 6 лет назад +1

    У меня почему то log красным подсвечивает и IDE не видит ее несмотря на то что все зависимости в pom прописаны и аннотация @Slf4j на месте.

    • @EugeneSuleimanov
      @EugeneSuleimanov  6 лет назад +4

      Если по факту приложение запускается, то попробуйте установить плагин Lombok в IDEA - это должно решить проблему.

    • @samatzhakin
      @samatzhakin 6 лет назад

      была та же ошибка с логированием, плагин так и не решил проблему, проект запускается только в postman ничего не приходит

    • @victormog
      @victormog 6 лет назад +4

      Было такое же...
      Установка плагина Lombok (с _предлагаемой после установки_ перезагрузкой IDEA) решил проблему!

    • @user-dg2mb4bh4w
      @user-dg2mb4bh4w 4 года назад +2

      Откройте "Файл"> "Настройки"> "Плагины".
      Нажмите "Обзор репозиториев"...
      Поиск плагина Lombok
      Нажмите "Установить плагин".
      Перезапустить IntelliJ IDEA

  • @user-so3pz1hj2d
    @user-so3pz1hj2d 5 лет назад

    Евгений, почему забросили канал и сайт ? :(

    • @EugeneSuleimanov
      @EugeneSuleimanov  5 лет назад

      Тяжела и не казиста жизнь тех.лида- программиста :). Тотальная нехватка времени. Сейчас по-немноу записываю 2 курса - многопоточность + Spring 5, но когда получится выкатить - не знаю. Постараюсь весной выложить.

  • @ramz9564
    @ramz9564 2 года назад +2

    Зачем нужен интерфейс CustomerService? Можно же сразу через класс сделать

    • @EugeneSuleimanov
      @EugeneSuleimanov  2 года назад +2

      Это потуги на SOLID. В данном случае и без него отработает, но по стандарту делаем через интерфейс.

    • @ramz9564
      @ramz9564 2 года назад +1

      @@EugeneSuleimanov понятно, спасибо.
      Ждём камбек на ютуб)

  • @user-ev7kx8sb3r
    @user-ev7kx8sb3r 4 года назад

    извини, я не понял за чем нужно логирование, можеш подсказать где я могу почитать об этом?

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 года назад

      Для мониторинга приложения и для поиска причин ошибок, если такие будут

  • @johnmarrewood
    @johnmarrewood 2 года назад

    Аннтации @Valid - где её взять?
    При import javax.validation.Valid;
    не может найти validation
    Автор, помоги плиз)

    • @johnmarrewood
      @johnmarrewood 2 года назад

      это в CustomerRestControllerV1 в методе saveCustomer

    • @johnmarrewood
      @johnmarrewood 2 года назад

      я уже нашёл ответ :D
      добавьте в pom.xml зависимость
      org.springframework.boot
      spring-boot-starter-validation

    • @EugeneSuleimanov
      @EugeneSuleimanov  2 года назад

      Не успел :)

  • @sergk7075
    @sergk7075 4 года назад

    Не совсем корректно раотают методы с ID , и некорректно обработаны експепшены. В случае невалидного айди вылетает внутрення ошибка java.util.NoSuchElementException: No value present. Все проверки на null не валидны

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 года назад

      Я обязательно перепроверю работу метода получения по id. При необходимости, внесу изменения на гитхаб репо и продублирую ссылку. Спасибо за сообщение.

    • @sergk7075
      @sergk7075 4 года назад

      @@EugeneSuleimanov Сорри я не указал что на монге пробовал запускать, для того что бы вылетала ошибка 404 вместо 501 дописл в сервисном методе return customerRepository.findById(id).orElseThrow(NotFoundException::new) и свой эксепшен
      @ResponseStatus(value = HttpStatus.NOT_FOUND, reason = "Invalid ID")
      public class NotFoundException extends RuntimeException {

  • @user-qz1ic6yb5v
    @user-qz1ic6yb5v 5 лет назад

    бесплатная идея не работает со спрингом? а у вас платная идея?

    • @EugeneSuleimanov
      @EugeneSuleimanov  5 лет назад

      Насколько я знаю, там нет spring initializer, но, не уверен, крайне давно не сталкивался с community edition. Т.е. работать со спрингом сможете, но нет встроенного инициализатора прокта.

  • @10velir74
    @10velir74 4 года назад

    А зачем логика в рест-контроллере описана?
    для это же сервисы существуют

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 года назад

      Проверку на null и пустой список вряд ли можно назвать логикой. Но, это спорный вопрос, конечно же

  • @mikhail6694
    @mikhail6694 2 года назад +1

    можно не писать updateCustomer а просто update тк Customer у нас уже в название класса

  • @user-gb2cd6ge7z
    @user-gb2cd6ge7z 2 года назад

    А как то вместо if можно Optional прикрутить?

  • @samatzhakin
    @samatzhakin 6 лет назад

    сначало бился изза mysql 8.0, забил на него снес поставил 5.6, вроде debug смотрю restController отдает лист, но в postman приходит только статус
    c git скачал проект, те же самые ошибки и с логирование и пустым response ((((

    • @victormog
      @victormog 6 лет назад

      Java какая?..

    • @samatzhakin
      @samatzhakin 6 лет назад

      1.8

    • @victormog
      @victormog 6 лет назад

      Samat Zhakin
      А в свойствах проекта?

    • @samatzhakin
      @samatzhakin 6 лет назад

      тоже

    • @victormog
      @victormog 6 лет назад

      Вечером попробую - отпишусь...

  • @oleksa537
    @oleksa537 3 года назад +1

    Сложно без объяснений. Здесь добавим эту аннотацию, там ту, здесь билдер, а нет не надо или надо, нет не надо.
    А откуда что берется - сам решай. Это ж не мастер-класс, а урок. Такое чувство, что за автором гонятся, прям такая спешка.

  • @alexzap8442
    @alexzap8442 4 года назад +3

    Видео про то как парень пишет код. Обучения и объяснений тут нет.

  • @zhitnick92
    @zhitnick92 5 лет назад

    Видео может и очень полезное, но не стал смотреть из-за очень уж мелкого разрешения экрана. Так это я ещё на 15,6", а представьте кого-то со смартфоном)

    • @EugeneSuleimanov
      @EugeneSuleimanov  5 лет назад

      Вы имеете в виду шрифт или низкое разрешение?

    • @zhitnick92
      @zhitnick92 5 лет назад

      @@EugeneSuleimanov Высокое разрешение экрана, от этого текст в видео тяжело рассмотреть. Не в обиду конечно, но глаза уже полезли на лоб за первые 20 секунд просмотра(

    • @zhitnick92
      @zhitnick92 5 лет назад

      @@EugeneSuleimanov Я часто смотрю подобные видео со смартфона, когда в дороге нахожусь, там бы точно ничего не было бы видно. Поэтому советую ставить разрешение поменьше хотя бы, когда снимаете видео ;)

  • @muslimarsakaev4313
    @muslimarsakaev4313 5 лет назад

    почему у меня записываются нулы???

    • @EugeneSuleimanov
      @EugeneSuleimanov  5 лет назад

      Значит не приходят данные и по умолчанию записываются null

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

    Майн риспектунг

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

      Спасибо за отзыв!

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

      @@EugeneSuleimanov Ваши видео правда помогли мне глубже понять то, как работать со спринг, поэтому я правда вам очень благодарен.

  • @user-sw5ck5qk7q
    @user-sw5ck5qk7q 5 лет назад

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  5 лет назад

      Обычно, репозиторий отвечает за "атомарные" операции с БД. А сервис - это наша бизнес-логика, вычисления и т.д. Хоть в данном приложении такой сложной логики и нет, мы должны оставить возможность для ее простой реализации

    • @user-sw5ck5qk7q
      @user-sw5ck5qk7q 5 лет назад

      @@EugeneSuleimanov Спасибо

  • @koposovkpt
    @koposovkpt 2 года назад +1

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

    • @nightmason4588
      @nightmason4588 Год назад

      можешь подсказать туториалы по лучше? Назву или ссылку, как удобнее

  • @moislav
    @moislav 2 года назад

    Ничерта не получилось (( не коннектится к БД хоть ты тресни. А за видео спасибо

    • @EugeneSuleimanov
      @EugeneSuleimanov  2 года назад +1

      Какие логи ошибки? И спасибо за отзыв!

    • @moislav
      @moislav 2 года назад

      @@EugeneSuleimanov Unable to create initial connections of pool. Скрин: yadi.sk/i/IurEtQRFgFdMjA

  • @immortal-spirit-13
    @immortal-spirit-13 4 года назад

    классное видео
    но работает криво и безрезультатно, даже ваш проект (((

  • @user22869
    @user22869 3 года назад

    это демотиватор, ниче не понятно, знакомое слово Лобок

  • @GT-cv3xu
    @GT-cv3xu 3 года назад

    Спасибо