Уважаемые жаба-пидоры, помогите.
Дорогие мои пидоры, после месячной пытки вы остались моей последней надеждой.
Если коротко: Есть ли какой-нибудь туториал/книга, для Spring Boot'а, которая обучает и объясняет с самых азов?
Если длинно: ~90% вакансий по джаве требуют Spring Boot. А все туториалы по нему как будто созданы для тех, кто УЖЕ понимает как оно работает. Не исключаю того факта, что мне не достаёт мозгов, но убейте меня, я не понимаю, как с этим всем работать. Оно просто не "кликает". Я следую туториалам, но ничего сам родить не могу. Не понятно зачем, не понятно как, не понятно откуда и куда.
Как пример понятного, годного туториала: Туториалы JavaTPoint
Еще на тему
Но это вглядит как... Как будто это для тех, кто уже работает с этим. Я же даже начать не могу
как бы не парадоксально это звучало, технологии и архитектура ведь та же - только язык другой
На примере туториала по свингу из javatpoint: там дают каждую деталь в отдельном сегменте, и по косточкам разбирают что оно умеет и для чего нужно. А так же объясняют, как это использовать.
В Спринге же, нет ничего из этого. Просто наваливают код с лопаты, и не объясняют ни элементы в отдельности, ни как они между собой работают, ни как их применять и расширять
Вот единственный туториал, который действительно мне помог, но его просто катастрофически мало. А от неумеющих говорить и объяснять индусов уже тошнить начинает
Меньше нытья, больше дела!
Посмотри этот. Подробней, чем написать кусок спринга самому, кмк, некуда. А вообще лучше с JavaEE и Servlet API начать, если только Java core знаешь. Потом голый Spring и уже после него Boot. Boot слишком много "магии" сразу в новичка кидает, что тебя и смущает.
Потом смотришь как работают автоконфигурации на примере какого-нибудь spring-boot-starter-jdbc. Это даёт понимание что большая часть магии - это просто написанный кем-то конфиг для наиболее частых кейсов.
После смотришь какие ещё автоконфиги для каких технологий есть. Отличный план, надежный, как швейцарские часы
Дополняя ответ: абсолютно из каждого утюга кричат, что сначала лучше учить бут, так как он... ну.. враппер, сделанный именно для упрощения всего этого процесса.
Не понимая базовую часть ты не сможешь нормально работать с бутом. Один хрен будет "магия".
https://www.baeldung.com/spring-boot
хз как они зайдут прям совсем новичку
ну и как тут выше кидали, если официальные доки не понятные - можно поискать обучающий курс
готов поспорить что есть сотни их, платных и бесплатных
https://www.coursera.org/search?query=spring%20boot&
> если официальные доки...
Понимаешь, тут дело не в токах, а в фундаментальном непонимании методологии работы этой бандуры
> сотни их, платных и бесплатных
И практически все, что я находил, упирались в проблему, из-за которой я и обратился на реактор: Они НИХУЯ не объясняют
да, куча непонятного говнокода (на самом деле нет), с кучей непонятых паттернов (на самом деле обычных) и разных хитрых фишек трахающих джаву во все дыры.
тот самый спринг потрошитель который тебе кидали как раз основан на изучении исходников.
Просто... Как я и сказал выше, новичкам везде рекомендуют именно бут, а не чистый спринг
А по поводу "дайте мне, чтобы понятно было" - бери в рот, там всё понятно.
А спринг бут это вершина эволюции когда происходит автоматическая конфигурация (не всегда) контейнера зависимостей спринга на основе наличия тех или иных классов (бинов) в области видимости класс лодера и присутствия настроек для этих классов а конфигурационном файле (проперти или ямла) или переменных окружения или просто по велению левой пятки.
чтобы всё это хоть как то заработало было написано много разных обёрток интеграций/автоконфигураций вокруг различных библиотек (бд брокеры парсеры и прочее). и вот это вот всё безобразие радостно грузится в виде дерева библиотечных зависимостей при сборке проекта после добавления одной строчки в грейдл или пом файле.
бизнес логику конечно самому всё таки придётся писать, но навесив кучу аннотаций на какой нибудь несчастный класс или поле получаешь кучу возможностей которые как то магическим образом хз как работают, а если с ходу не работают, трахаешься с тем почему, залезая в кишки спринга.
Говоря "как работает спринг" я имел в виду больше "Почему делается именно так, а не иначе".
На примере туториала по свингу из javatpoint: там дают каждую деталь в отдельном сегменте, и по косточкам разбирают что оно умеет и для чего нужно. А так же объясняют, как это использовать.
В тутриалах спринга же, нет ничего из этого. Просто наваливают код с лопаты, и не объясняют ни элементы в отдельности, ни как они между собой работают, ни как их применять и расширять.
Эти самые аннотации, как именно следует делать инжекшоны зависимостей. Нахуя нужен абсолютно пустой main и всё пихается в контроллер.
Приложение на спринге или буте может быть и без контроллеров.
И да, для начала нужно учить что такое Spring и как его едят
А то что оно не просто печатает System.out.println("Hello world"); так это не проблема спринга
Зависимости это поля в твоём классе того или иного типа (обычно жирненькие такие типа рест клиента), инежекцию зависимостей (инициализацию полей) делает тот самый спринг, на основе разных критериев, это может быть аннотация на поле, аннотация на сеттере поля, аннотация на конструкторе класса или само наличие конструктора класса со всеми полями или даже отсутствие явно описанного конструктора, но наличие аннотации ломбока генерирующей этот самый конструктор. прогеры пиздец как ленивые и лишнюю строчку написать не хотят.
спринг работает предельно логично, при старте приложения ходит по классам и смотрит наличие этих самых аннотаций или иных критериев внедрения зависимостей (жирненькую xml-ку не забываем), создаёт обьекты и распихивает их везде где посчитает нужным. В кишочках там разное дерьмо вплоть до рефлекшена и проксей чтобы добраться до полей которые надо проинициализировать или повесить ожидаемое поведение для той или иной аннотации.
спринг бут поверх спринга навалил автоконфигураторов всего этого добра, чтобы ещё меньше писать кода и просто зайти на start.spring.io потыкать кнопочки и получить абсолютно рабочее но нихуя не делающее приложение в которое осталось добавить бизнес логику.
чтобы узнать почему делается так или иначе в данной версии спринга, бута, библиотек надо лезть в кишки или читать смотреть тех кто за тебя слазил в кишки. Кстати создатели спринга гордятся тем что пришут очень подробные коментарии к интрефейсам и даже иногда коду, с примерами и всем таким прочим.
разжовывает внутреннюю кухню спринга уже упомянутый спринг потрошитель, а там идеология за десять лет говнокодинга раз пять менялась, поэтому обьясняет тем кто привык к одному подходу как оно сейчас работает так же но по другому. а разные туториалы для дибилов тупо рассказывают как сделать хуяк хуяк и в прод, даже не пытаются лезть внутрь ибо там пару томов можно написать и оно устареет через год.
как с этим всем жить? быстро добираться до стадии принятия неизбежного и начинать говнокодить по туториалам, иногда спускаясь в кишочки если сразу не взлетело.
Т.е. спринг -- это просто защита от спагетти-кода путём расстановки указателей "какую макаронинку куда тянуть"?
Алсо, *детским голосом* ломбок даже не выглядит как джава(
а то что там весь код аннотациями приходится обмазывать это издержки упрощения. некоторые туториалы по ранним версиям спринга добротную такую лапшу вываливают и ведь работает до сих пор (но это не точно).
Как по мне там норм разжевано
1. Начни вообще с изучения понятия dependency injection.
2. Дальше напиши хелоу ворлд на голых джава сервлетах. В дебри нырять не надо, достаточно понимать как обрабатывается запрос. Тут тебе придется еще поднять контейнер сервлетов, собрать war и задеплоить его туда.
2. Потом напиши примитивный crud на связке spring-web-mvc + spring-data-japa, БЕЗ использования Boot. Например, принимать post запрос в контролере, который парсит json в дто, дто в энтити и сохранять это в БД.
По мимо написания самого кода, тут тебе придется так же билдить war и деплоить в томкат, а еще попутно объявить и сконфигурить около 5 спринговых бинов, по типу transaction manager, entity mager factory, data source и приправить это все аннотациями. Первый раз это все будет больно, но зато это даст хоть какое-то понятие, что творится под капотом у бута, а не считать это все магией.
3. А вот теперь уже можно ковырять бут и можно все тоже самое, что ты делал во втором пункте, но сделай это уже на буте. Ты сразу заметишь насколько меньше нужны теперь конфигурить спринг, что томкат теперь встроенный и нет нужды в отдельном деплое , а можно сразу запускать jar и т.д.
Естественно для всех 3 пунктов тебе понадобятся видеоуроки\гайды\курсы. А еще чтобы пытаться хоть лезть в коммерческую разработку на спринге, тебе надо на базовом уровне знать гит, мавен и БД.
На все про все у тебя уйдет 3-6 месяцев, если будешь заниматься хотя бы два часа в день.
Особо легко не будет, ынтепрайз на джаве имеет некий порог вхождения, для кого-то ничего особенного, для кого-то недостижимый. Но в любом случае "вайти в айти" за месяц, у тебя не получится.
> гит, мавен и БД.
Гит изучу, грейдл и с БД (и JDBC) у меня даже коммерческий опыт есть :3
пойду курить гайды)
Туториалов мало, надо брать материал системно, чтобы хотя бы примерно понимать, как оно работает внутри, под слоями "магии". Бери всё этапами, слой технологии за слоем. Полезешь сразу во всё - утонешь.
Начать хотя бы с обычных Java EE сервлетов + jsp, чтобы в принципе понимать, как шестерёнки крутятся внутри серверных приложений. Разберёшься с запросами и сессиями. Бонусом уже здесь можно узнать, что такое пул соединений и зачем она надо. Для доступа к БД - JDBC и писать все запросы ручками.
До Spring Boot лучше потыкать чистый Spring Core. Spring Core буквально соответствует своему названию, это ядро огромного фреймворка, в рамках которого Spring Boot - всего лишь надстройка для автоконфигурации. Плохо разберёшься в Spring Core - дальше могут вылезти проблемы на ровном месте, где, казалось бы, всё должно быть хорошо. Пока даже без сайта - на примере обычного консольного приложения. Просто посмотреть, как надо работать с бинами: конфигурировать их, задавать зависимости, получать из контейнера. Жизненный цикл бинов, скоупы prototype и singleton. Аннотации @Bean, @Configuration, @Component, @Autowired, @Qualifier. @Value и @PropertySource до кучи.
Посмотреть, как работает Spring MVC. Почитать про REST API, Hateoas. Доступ к БД - Spring JDBC Template как надстройка над JDBC.
Начать смотреть Spring Boot. Для работы с БД уже можно трогать ORM с JPA, Spring JPA, Hibernate.
Spring Security.
Ну и дальше уже смотреть, чего не хватает и что подтянуть.
Вот здесь худо-бедно по этапам и с учебными материалами
https://github.com/mjc-school/MJC-School
По книгам вроде рекомендуют Spring in Action.
Искать материалы именно по Spring Core без Spring Boot мне было непросто. Как вариант конкретно для Core тот же Spring in Action можно брать "дремучего" 4 издания.
Хе. Практически то же самое порекомендовал и Редимер сверху) Сервлеты, JSP... А вот с JDBC знаком, на своё счастье.
Спасибо за подробный роад-мап, дружище! Буду начинать!
Spring in action скучнющий и раздутый, как мне показалось.
https://docs.spring.io/spring-framework/docs/current/reference/html/core.html