Spring Boot с НУЛЯ - Курс для НАЧИНАЮЩИХ с ПРАКТИКОЙ [2023]
Spring Boot - это полезный проект, целью которого является упрощение создания приложений на основе Spring. Он позволяет наиболее простым способом создать web-приложение, требуя от разработчиков минимум усилий по его настройке и написанию кода
Дополнительный материал на Бусти - boosty.to/korsakov
Исходный код - github.com/Asher404QQ/spring_...
Контент:
00:00 Вступление
00:55 Что такое Spring Framework
02:28 Что такое Spring Boot
03:44 Преимущества Spring Boot
05:17 Data Access
06:22 WEB
06:56 AOP - Aspects - Instumentation - Messaging
08:26 Core Container
09:08 Test
09:38 Будущее приложение
11:55 Создание проекта
14:50 Структура проекта
21:23 Первый запуск приложения
23:27 Добавление index.html
24:44 Что такое контроллер
25:40 Создание контроллера (1 уровень)
28:15 Создание класса Student
29:00 Добавление Lombok
31:40 Первая контрольная точка (GET)
33:30 Тестирование контроллера
35:48 Создание StudentService (2 уровень)
38:46 Dependency Injection или Внедрение зависимостей
42:32 Рефакторинг StudentService и создание InMemoryStudentServiceImpl
44:56 Создание методов C.R.U.D.
46:14 Создание репозитория (3 уровень)
52:04 Использование репозитория (3 уровень) в сервисе (2 уровень)
53:27 Использование сервиса (2 уровень) в контроллере (1 уровень)
57:50 Тестирование API
01:05:05 Как Spring обрабатывает запрос
01:08:05 Spring Data Jpa
01:11:25 Настройка подключения к Базе Данных
01:16:51 Преобразование Java класса в таблицу БД
01:20:25 JPA Repository
01:21:55 Создание сервиса для работы с БД
01:25:02 Как переключаться между двумя сервисами?
01:26:15 Финальное тестирование
01:29:40 Конец
Смотрю пол часа и мне уже понравилось) ставлю лайк и так держать, давай еще такх видосов.
я тебя люблю бро не забрасывай никогда это дело, по спрингу просто нет никакой структурированной информации в одном месте
Серьезно? Больше нигде нет про спринг?
@@user-he6ct7us5h в одном ролике про архитектуру и про аннотации так хорошо рассказать? нет
@@user-he6ct7us5hофициальная документация
@@user-he6ct7us5h попробуй найди
Спасибо большое. Успехов ✊✊✊✊
Чувак, ты просто гений подачи материала, жду больше обучающих видео) Желаю тебе миллиона подписчиков)
Какой титанический труд. Спасибо тебе огромное, это лучшее видео по спрингу!
Суперский курс Низкий поклон
Красавчик! Пиши еще. Нужно такое же по работе с SOAP
Спасибо тебе большое!!! Благодаря этому видео разобрался с SpringBoot и сдал 1 лабу в универе. посылаю лучи поддержки (помимо лайка и подписки) ❤❤❤
Великолепная работа! За 1,5 часа просто и доступно объяснить все базовые вещи и при этом очень красиво всё смонтировать, это дорогого стоит! С меня лайк и подписка, буду ждать новых видеоуроков!
Спасибо, стараюсь делать видео почаще, хоть после работы не так уж и много времени остается. Забрасывать пока не планирую, так что контент будет выходить, в ближайшее время (надеюсь за неделю управлюсь) выйдет видео по структурам данных.
У тебя похоже талант объяснения! Сколько смотрел разных прогеров по спрингу - у кого муторно застрелиться прям хочется, у кого не понятно, кто от самых динозавров историю ведет, кто скачет как сайгак по 4 раза пересматривать приходится чего он там делает и куда скачет. Ты все понятно объясняешь, рассказываешь для чего какая аннотация, как работает, где какие зависимости, от чего наследуется, чего в составе. Интересно самое главное и доступно! Мужик, мое почтение)))! Лайк, подписка!
Надеюсь, эта тема у тебя полетит! Контент топовый👍 и работы вложено немало, это видно!
Братан, хорош. Давай, давай, вперёд. Контент в кайф. Можно ещё? Вообще красавчик.
Спасибо за видос, все очень доступно понятно, бесконечно благодарен автору, отличный контент, продолжайте в том же духе
Это просто обалденно, жду 10 часовое видео по какому нибудь огромному проекту типа Интернет магазин или Интернет газета с Docker,Swagger,GraphQL, Spring MVC или что нибудь по интереснее в виде Vue 3, Security, JWT, JDBC, liquibase, minio
Да, у меня есть идея сделать приложение для отслеживания стоимости акций в реальном времени, благо есть yahoo finance. Но проблема во-времени. Я один этот ролик делал больше месяца, хотя он всего полтора часа идет. А представь eureka, keycloak, gateway +фронт, хотя бы одностраничный на angular. Это слишком много времени займет. Может, когда я уволюсь, тогда смогу что-то подобное замутить, а пока я даже боюсь начать...
@@Antosha.Korsakov думаю можно как вариант взять api какой либо крипто биржи
Спасибо! Супер!!
Парнишка такой молодой, а так соображает) респект за видео!
Очень редко пишу комментарии, однако, твои видео это нечто из мира туторов: кратко и в необходимой степени подробно) Желаю успехов, таких клевых каналов на ютубе очень мало, с меня лайк и подписка)
Просто топчег! давай ещё подобных уроков по Java, за плагин отдельный лайк)
Всё отлично, спасибо большое за урок! Интересно было бы послушать как подключить вторую базу данных.
привет, впервые попал на твой канал и увидел это видео, надеюсь будет еще, собираюсь смотреть что такое spring boot, заранее спасибо! :)
Пожалуйста, надеюсь сможешь найти нужную и полезную информацию.
Антон, шикарно объясняешь материал. Я сам по высшему образованию и опыту работы учитель. Один момент - для других, кто смотрит видео и столкнулся с трудностью как я - на отметке времени 32:10 код "Student.builder" IDEA у меня не понимала. Решилась ситуация добавлением плагина lombok в IDEA. Т.е. необходимо не только добавить зависимость в pom.xml, но также установить плагин "Lombok" в IDEA. За видео благодарю!
Понятное и логичное объяснение что зачем и как-редкое явление
Чувак, ты офигенен. Мне надо было быстро въехать в основные концепции спринга и твое видео зашло идеально. Молодец, продолжай пожалуйста!
Спасибо, сейчас делаю курс про то, как сделать веб-приложение без спринга, но это для бусти. А на ютуб канале следующее видео будет по spring security, скорее всего про защиту приложения с JWT
@@Antosha.Korsakov ничего себе.я как раз нашел твое видео, пока искал видео по спринг секьюрити. когда выйдет видео по нему?
@@Antosha.Korsakov стоп. оно уже на канале. класс. пойду ка посмотрю
Курс топ, красавчик. Очень полезно, спасибо большое! Один момент только. С качеством что-то не то. Приходилось постоянно на полный экран открывать видео, либо тщательно вглядываться
Антон, спасибо большое, я находился в тупике в понимании спринга, не понимал как заимодействуют между собой уровни, что за что и как отвечает и как все пакеты в приложении взщаимосвязаны. Поделал проектик вместе с тобой по вижео и все прояснилось, Спасибо огромное
Точно так же и у меня, базовые вещи очень стали понятны. Спасибо большое за такое видео о Spring и языке программирования Java. Лайк и подписка однозначно. Успехов. Ждем новые видео
Это ТОП!
Спасибо! Пошагово, понятно, без лишней воды. Единственная просьба, по возможности использовать IDEA Community Edition, т.к Ultimate не каждый имеет возможность использовать.
шикарно подаешь информацию, да, может нехватает немного больше информации о той или иной аннотации, которые ты используешь, но как говорится это остается для самостоятельных изисканиях.
Несколько месяцев обучения во дном видео, просто и понятно, лайк!
Антон, подскажите, у меня хорошая база по java, но Spring не изучала. Можно мне сразу смотреть этот курс? Или желательно все-таки ознакомится со Spring для начала.
Что за плагин который дополняет код? Например на 45:14 когда пишешь Student он предлагает getStudent?
Хорошая подача, всё понятно объяснил. Единственное, качество записи экрана сделай лучше,тяжело разбирать пиксели. В остальном красавец =)
Очень редко оставляю комментарии, но тут прям вайбы благодарности так и прут. Самое лучшее видео по спрингу что я видел на данный момент. Четко, структурированно, лаконично, приятная подача, монтаж, объяснения, 12/10! После бесплатных видеоуроков Алишева и Заура залетело в цвет. Спасибо большое!
так он ни чего про спринг не расказал, очень поврехностно получилось только про MVC и капля про Spring Data, ну еще это все было написано на буде
Спасибо, материал подан круто! Но надо было еще помельче и побледнее шрифт.🙂👍
Привет можешь подсказать что за плагины у тебя стоят в IDEA?
Супер! Сделай пожалуйста ролик про пагинацию вместе фильтрацией сортировкой с помощью specification jpa.
Да, это интересная тема. Скорее всего, я сделаю ролик по ней, но не в ближайшее время, так как два больших видео уже в разработке. Одно по защите Java приложения с помощью Jwt, а второе по алгоритмом. Это не говоря уже о курсе на бусти по построению веб-приложения без спринга. Но спасибо огромное за идею. Я обязательно сделаю видео на эту тему.
Спасибо огромное! Но вот вопрос, у меня ошибка на 1:04:18 при обновлении студента - ошибка сервера 500. Почему на видео работает метод обновления без поля id, а у меня только если я добавляю первую строку с полем id ? Делала все в точности по видео, куда копать? Потому что сейчас сначала требуется найти обновляемого по методу поиска, чтобы узнать его id, а потом уже обновлять, прописывая все поля модели(
Скажи, пожалуйста, какие у тебя плагины в intellij
Это было офигенно! огромное спасибо! хочу спросить, какие литературы видеоуроки и тд рекомендуешь для дальнейшего изучения спринга?
Книги не советую читать по спрингу, он слишком быстро обновляется (где-то раз в год), а книга пишется и редактируется года 3. Видео, к сожалению, на ру ютубе хороших не видел. Есть amigoscode на английском, вроде у него нормальные видео. Я читал доку по спрингу, она хорошо написана + мне ментор помог. Если тебя интересует именно видео формат, то ищи на американском ютубе
@@Antosha.Korsakov Marco codes тоже приятный канал и Dan Vega
можете еще раз написать про внедрение зависимостей. только на простом языке. не совсем поняла, хотя рассказали очень хорошо
Круто, ждем уроков по джава и спрингу
круто объяснгяешь, еще бы где то взять докер совсем этим чтобы для чайника с виндой было понятно и не заморачимватьс c этими с установкой java и intelj
spasibo!
Спасибо за контент. Одна лишь просьба - увеличивать масштаб, когда на экране код. Мне лично было сложновато.
на котлине на спринге никто не пишет в 23 году? для себя хочу понять
классный доклад!) хотелось бы еще сравнение с КТОРом куда лучше идти в спринг или в ктор?)
Я не знаю, насколько тебе это важно, но посмотри сколько вакансий на ktor и сколько на spring. + на спринге не разрабатывают андроид приложения, spring = enterprise.
Не часто хочется оставить комментарий, но это первый нормальный практический урок на моей памяти, где я действительно все сделал от и до и все заработало, не без своих ошибок, но в целом все исправил, и получил представление как запустить Spring приложение. Выражаю благодарность, однозначно подписался на канал, посмотрю другие уроки, возможно оформлю подписку на бусти т.к ты реально круто показал как все делается.
Спасибо за теплый комментарий, на ютубе следующее видео будет о защите приложения с помощью JWT на версии spring boot 3. Я начну его делать после того, как закончу разрабатывать видео про создание веб приложения без спринга. Если есть идеи для видео, то буду рад прочитать
отлично)@@Antosha.Korsakov
при запуске проекта, такая штука выходит: java: warning: source release 17 requires target release 17 Module demoTask1 SDK 1.7 is not compatible with the source version 17. Upgrade Module SDK in project settings to 17 or higher. Open project settings. не знаю что делать уже.
У меня билдер все время подчеркивается и пишет Cannot resolve method 'builder' in 'Column'. Column это мой класс, вместе Student, но сам код в точности как у тебя, название просто другое
import org.springframework.boot.SpringApplication; выделяет красным intellij idea 15.0.4 что делать? помогите пожалуйста! как спринг фреймворк подключить?
Можете объяснить про аннотацию @Transactional, почему без нее 500 статус?(в методе delete) В документации не могу понять : "Аннотация jakarta.transaction.Transactional предоставляет приложению возможность декларативно контролировать границы транзакций в управляемых компонентах CDI, а также в классах, определенных как управляемые компоненты в спецификации Jakarta EE, как на уровне класса, так и на уровне метода, при этом аннотации уровня метода переопределяют аннотации на уровне метода. уровень класса."
Привет! Очень классно! P.S. раздел "Как spting обрабатывает запрос " явно с опечаткой
Да, спасибо, исправил
Шикарное видео, 10/10. Все четко разобрано, понятными словами, с презентацией. Разве что: 1) Как называется плагин, который тебе подсвечивает что нужно написать ? 2) Можно было немножко пояснить почему нужна транзакция у delete А так отлично говоришь, ясно объясняешь Надеюсь канал не забросится и будет пополнятся годным контентом Всех благ тебе !
1. Это обычный copilot, вроде tabnine ai, если не ошибаюсь. Лучше не использовать, он советует половину правильно, половину совсем нет. Это заставляет перечитывать код, что не есть хорошо. Если хочется, то можешь поставить, попробовать. Но постоянно с этой штукой работать невозможно. 2. Аннотация транзакция есть у всех методов crud repository, это сделано для того, чтобы операция выполнилась только в том случае, если все условия соблюдены. Я же создал свой метод удаления. Расписывать все не буду, если есть желание, то ознакомься с ACID. Transactional лишь указывает, что конкретно этот метод должен выполняться внутри транзакции БД.
Вообще, по поводу аннотации, ее можно на весь класс навесить, чтобы она ко всем методам цеплялась. Поэтому, если ты создаешь уникальный метод CRUD, как у меня с удалением и поиском по email. То можно просто к классу сервису добавить Transactional и он сам добавит ее на все методы.
Hello world, Anton! 😂
Видео крутое! Но все делал как ты, у тебя таблица создалсь а у меня нет(
27:54 Пояснение к негласному правилу называть путь /api/ Свойство REST API это поддержка клиент-серверских операции на любых устройствах (браузер, десктопное приложение, сервера). Если бы вы сделали десктопное приложение, то у вас например есть App.exe (version 1.0), которая использовала логику /api/v1/. Но вдруг вы решили обновить App.exe (version 2.0), и убрать оттуда функционал которая была на первой версии (или изменить функционал). Тогда вам придётся создавать /api/v2/, потому что у вас ведь остались ещё люди, которые работают на version 1.0
Очень хорошее видео, спасибо. Я всё поняла, кроме того, каким образом осуществляется поиск по почте. Откуда спринг знает, какое поле проверять? Или по всем идёт проверка? Кто-нибудь, объясните, пожалуйста.
Я точно не помню, что там в видео, но, могу предположить, что там идет генерация по имени метода. Что-то на подобие findByEmail(String email). Интерфейс JpaRepository, от которого мы наследуемся, позволяет на основе имени метода генерировать запросы. В итоге findByEmail(String email) превращается в SELECT * FROM table WHERE email = ?
@@Antosha.Korsakov я поняла, спасибо большое за ответ!
Братик можешь голос свой громче делать
Всё супер, только ничего не видно , можно ли как-то увеличить код ?? было бы impeccable
Уже нельзя, но я учту это в следующих видео
видео круто, спасибо! НО: -качество! -звук! -масштаб когда на экране код!
Очень классный видос, спасибо тебе огромное что двигаешь снг ютуб) Единственное что мешает - картинка сыпется сильно, хотя выставил максимальное качество( Если такое не только у меня жмакните лайк или ответьте на комент
Благодарю за комплимент, я пролистал видос, вроде бы все нормально, нет никаких артефактов. Есть только переходы с гличами, но это так и должно быть.
не сыпется, а вот шрифт конечно маловат ((( @@Antosha.Korsakov
Это я уже понял, в следующих видео исправлю эту оплошность. Но в этом уроке, к сожалению, ничего уже не сделать
ахренеть... Я столько денег отвалил за учебу,а тут такое и бесплатно,боюсь даже остальные смотреть,что бы уж совсем не разочароваться в своих тратах... Ребята,кто только это осваивает,цените,видео невероятно полезное.
Классное видео. Не могу понять почему он отказывается выводить список студентов. Вроде бы адрес указываю верно. А он ошибку выдает 404. А просто по localhost и порту нормально выводит Hello World
Без кода ничего не понятно, слишком много причин может быть
Можешь кинуть git, я гляну
@@Antosha.Korsakov завтра закину) спасибо за столь оперативный ответ)
Каким образом сохранять и извлекать данные в spring jpa. У меня есть две сущности сотрудник и должность. В должности допустим у меня есть id, название и описание. У сотрудника при этом есть поле фио, пол, дата рождения, должность, дата приема на работу и дата увольнения. При создание сотрудника мне не нужно передавать дату увольнения. Как мне оптимизировать код. Чтобы при добавление сотрудника я отправлял в базу данных только id должности а при извлечение я получал название должности. Для этого мне нужно создавать доп. классы и переписывать crud методы для моих нужд? Или есть другая возможность например с помощью аннотаций? или вообще не нужно оптимизаций?
Честно, тут предметную область смотреть надо, но, насколько я понял... В @Column есть элемент insertable, с помощью него можно контролировать будет ли поле в INSERT. Ставишь @Column(insertable=false) над теми полями, которые не хочешь видеть в запросе. А доставать данные можно через связь @OneToOne. Это если у сотрудника может быть только одна должность.
@@Antosha.Korsakov Спасибо! А разве @OneToOne, не односторонюю @ManyToOne чтобы разные сотрудники могли иметь одинаковую должность?
Односторонние и двусторонние отношения - это другое. В первом случае - неглавная сторона ничего не знает об отношениях с владельцем. Во-втором - обе стороны знают об отношениях. На счет ManyToOne - OneToMany, то да, если у одной должности может быть множество сотрудников, то ставишь OneToMany Для должности и ManyToOne для сотрудника. А так же - обозначаешь сотрудника, как владельца. Но, опять же, тут предметно надо смотреть, у тебя система вообще по другому может быть выстроена
А, сори, перечитал комментарий, да, односторонняя @ManyToOne подойдет
1:19:16 не удался результат. Не удается понять, в чем дело. Было бы здорово, если бы была ссылка на гит по данному проекту
поменял yaml обратно на properties ввел это spring.datasource.url=jdbc:postgresql://localhost:5432/student_db spring.datasource.username= postgres spring.datasource.password= 12345 spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true все работает
утуб потер твой комментарий т.к ты указал ссылку. Но я вижу, что ты ее прикрепил к описанию видео. Спасибо большое. А то на последнем шаге с Jpa опять какая-то беда
Все получилось. Огромное спасибо автор за данный урок
Код мелковат, порой приходится увеличивать, а так годный контент) Про тесты бы еще инфы
Да, спасибо, в следующих видео решу проблему с мелким текстом. Про тестирование особо не знаю что говорить. Писать юнит тесты проще простого, mockito я еще ни разу не использовал на проектах, как и selenium. Этим QA занимается. Я не разбираюсь во всех тонкостях ни того, ни другого фреймворка, а говорить о том, в чем не разбираешься, как-то не очень.
Не могу понять почему ни у кого не возник вопрос с вкладкой "DataBase" Она ведь только на Ultimate Версии есть, и ни как не могу установить нормально плагин для postgresql соответственно все что связано с базой не катится дальше
поищи в плагинах, там есть и для комьюнити
очень мелко, увеличивай экран пожалуйста, с ноутбука смотреть сложно и создание/изменение бд напрямую в бд плохо (только если это не урок работы исключительно с бд), хотелось бы увидеть использование liquibase
У тебя три автокомплитера! ТРИ! Как это вообще работает вместе? AWS Tool, Tabnine и Copilot. Нет, ну если в этом правда есть смысл, то я очень хочу узнать, мне на самом деле интересно.
снимаю шляпу, очень хорошо и доходчиво, но все равно ощущение как будто я прошёл java core а теперь мне говорят, ну а теперь по новой но все будет по другому ))
если честно даже дизмораль какая-то, хотя видео дало понимание того как устроен спринг и почему, но вот этот весь внутренний синтаксис в нем, выглядит пугающим и громоздким, занимаюсь смещением активности пол дня уже лишь бы не приступать к написанию кода
Ничего страшного, такое бывает, когда не понимаешь с чем имеешь дело. Есть два варианта решения проблемы, как по мне. Завалить себя кучей информации и практики, чтобы набить глаз. Либо попытаться разобраться с самых низов, чтобы потом сказать: "А, это на самом деле так работает!"
Вообще уже и postman не нужен, в idea все это проверить можно
Он читает с компа
Я только начал изучение Spring,если у кого-то есть желание законектиться можете ответить на это сообщение
Я, можно сказать, тоже) можешь мне написать, если актуально
@@vtorushinse актуально
@@vtorushinseактуально
@@vtorushinseда
@@vtorushinse да
бро живет в бане
Антошка, вот чисто по человечески тебе скажу (без обид) - контент не плохой, дикция не отличная, но хорошая, но никому не хочется смотреть говорящую голову. Делай визуализацию 99% контента, а не наоборот.
Не могу понять, что это за знак такой в "@RequestMapping(???"/api/v1/students")"? На месте знаков вопроса, время- 33-04. Что он значит и как его набрать? Разъясни пожалуйста.
Это Idea подсвечивает, там просто ("/api/v1/students")