LINUX.ORG.RU

Как понять суть spring

 , ,


1

2

Киньте какой-нибудь документацией, чтобы было описано понятным языком как там внутри всё устроено и работает. А то гуглятся только всякие гайды, типа как сделать rest сервер, из которых ни черта не ясно.

Ответ на: комментарий от crutch_master

spring

Всё серьёзно.

Конечно. Ынтерпрайз же.

  1. Купить книжку за $50
  2. Научится сабжу
  3. Нaйти работу за $120000+/year
  4. PROFIT!!1
mimimimi
()

Сразу как дойдёшь до базовых вещей, напишешь хэлловорлд -

Гугли на Ютубе доклады Жени Борисова.

Можно начать со «Spring потрошитель»

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

HW написал давно, но всё равно ничего не понял. Есть, например проект (не мой), в нём тесты не цепляют spring.xml, а понять как его починить и что ему надо нет возможности. Вокруг только магия из аннотаций.

crutch_master ★★★★★
() автор топика
Ответ на: комментарий от stevejobs

Сразу вопрос, как аксакалу java-кодинга. Куда вались со спринга? Есть что-нибудь по проще без магии и чёрных ящиков?

crutch_master ★★★★★
() автор топика

А зачем его понимать? Делай чтоб работало / загребай бабло лопатой / смотри на всех как на г / на собеседованиях смейся им в лицо — ты зарабатываешь в 3 раза больше всех их вместе взятых.

Deleted
()
Ответ на: комментарий от crutch_master

Вокруг только магия из аннотаций.

Конфигуряй через хмл.

ya-betmen ★★★★★
()
Ответ на: комментарий от crutch_master

Самое тупое - попадает ли это spring.xml в classpath.

Deleted
()
Ответ на: комментарий от Deleted

Два чаю этому жентельмену.
Научись отвечать на вопросы для собеседований и правильно расставлять аннотации.
Если хочется сакральных знаний то тебе точно не на спринг смотреть нужно. Спринг создан что бы опердени максимально быстро и стандартизировано в продакшен запускать.

Deleted
()

Киньте какой-нибудь документацией,

Reference manual, она объясняет как пользоваться, как устроено не объясняет, но с ide легко можешь покопаться в коде, хотя сам понимаешь, там будут прокси, рефлекшен и акробатика с аннотациями. Важно понять, что reference manual не объясняет как написать сервис готовый к высоким нагрузкам. Все примеры mvc просто показывают как создать несколько слоев приложения, но если писать в лоб, надеясь на магический spring или hibernate, то привет затык в I/O против базы. Так что нужно быть готовым к тому, что знание spring не дадут автоматом +10 к проектированию сложных сервисов.

Aber ★★★★★
()

было описано понятным языком как там внутри всё устроено и работает.

отладчик в руки и вперёд, изучается нараз

Deleted
()
Ответ на: комментарий от ya-betmen

А чем вызван guice -> spring? Ибо я как раз таки переехал на guice.

От проблемы зависит, писался классический сервис против базы, а guice был экспериментом, так помимо IoC вдруг выяснилось как же хорошо когда все из коробки, тот же spring-data. К DI/IoC вопросов не возникло. Guice норм, может еще вернусь если задача не затребует orm против базы или web.

Aber ★★★★★
()

Lifehack:

Не раз выручало, и против gradle, и против spring, и много еще когда:

google.com > site:github.com @EnableWebMvc "SpringApplication.run" <другие_ключевые_солова>

Aber ★★★★★
()
Ответ на: комментарий от Aber

Ну я всегда считал спрингдату мутантской свщностью, так что пока негрозит.

ya-betmen ★★★★★
()
Ответ на: комментарий от crutch_master

Никуда не валить со спринга, за него бабки плотют.

в нём тесты не цепляют spring.xml, а понять как его починить и что ему надо нет возможности

нужно включить логику. Говоришь, Hello World писал? Значит понимаешь, что для старта контекста нужно сделать ClassPathXmlApplicationContext

дальше просто смотришь, где он в этом проекте используется. Можно поставить брейкпоинты в ClassPathXmlApplicationContext, на случай если он создаётся не напраямую

дальше смотришь место вызова, там будет описано откуда брать файл. Кладёшь файл на то место, где он его ищет, всё.

начальное знакомство со Спрингом - это всегда отладчик

Вокруг только магия из аннотаций.

Нужно понять базовую схему, как работают эти аннотации. Что такое BeanPostProcessor, например. Начинать можно как раз со «Spring-потрошителя».

я когда готовился в последний раз к собеседованию по Спрингу, просто потратил несколько дней на [чтение документации](https://docs.spring.io/spring/docs/5.0.4.BUILD-SNAPSHOT/spring-framework-refe...) по нему. Просто сверху вниз, вообще весь документ. Это даёт общую эрудицию чтобы хотя бы понимать, что из себя Спринг предствляет, а что - не представляет. Что в нём есть, и чего в нём нету.

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

stevejobs ★★★★☆
()
Ответ на: комментарий от crutch_master

Куда вались со спринга? Есть что-нибудь по проще без магии и чёрных ящиков?

Если ищешь смысл в ORM, то очевидно JPA 2.2 и EJB 3.2 из стандартного Java EE 8.

iZEN ★★★★★
()
Ответ на: комментарий от crutch_master

Вот насчёт аннотаций посоветую повременить. Посиди поначалу на XML и не пользуй всякую гадость вроде автоматического сканирования. Так проще для новичка, всё указывается чётко и явно. Я не против аннотаций, но они добавляют немного магии, которая на стадии обучения ни к чему.

Legioner ★★★★★
()

чтобы было описано понятным языком как там внутри всё устроено и работает.

Понятным языком - невозможно. Это большое с сложное «всё на свете» с кучей того, что было и того, что сейчас модно. spring.xml можно подключить нескольким способами (а исчо тесты бывают IDE ориентированными т.е. работающими только в IDE), (а исчо, возможно, в тестах тебе надо подключить совсем другой spring-test.xml), (а исчо ...) и подсказать как и чего в тестах тебе может только главАрхитектор проекта, тех. документация проекта ну или метод научного тыка в дебагере.

vtVitus ★★★★★
()
Последнее исправление: vtVitus (всего исправлений: 2)
Ответ на: комментарий от crutch_master

ну, вообще что там есть оф мануал. бесплатный вполне. будучи ещё молодым я его весь прочитал и написал сайт на этом самом спринг секьюрити + спринг веб (что ли, не уверен..).

Но если хочешь что б разжевали и в рот положили, то да, книжка лучший выбор. 50 баксов обычная цена для нормальной книжки с хорошей редактурой, если что.

АПД. ...И отнюдь не только по яве. Про данную конкретную книжку ничего сказать не могу, только по цене - цена ок.

AndreyKl ★★★★★
()
Последнее исправление: AndreyKl (всего исправлений: 2)
Ответ на: комментарий от stevejobs

Можно поставить брейкпоинты в ClassPathXmlApplicationContext, на случай если он создаётся не напраямую

Там в любом случае полного пути нет. Посмотрел strace, что он ищет, положил, ок, схавал, но падает теперь с

java.lang.NoSuchMethodError: org.springframework.data.repository.config.RepositoryConfigurationSource.getAttribute(Ljava/lang/String;)Ljava/util/O
ptional;
        at org.springframework.data.jpa.repository.config.JpaRepositoryConfigExtension.postProcess(JpaRepositoryConfigExtension.java:125)
Коллега грит, что это нормально и приходится по неделе колупаться со всякой мелкой хернёй. Но меня совсем что-то не устраивает такой подход.

crutch_master ★★★★★
() автор топика
Ответ на: комментарий от vtVitus

Ой вей. Есть только половина главархитертора и научный тык.

crutch_master ★★★★★
() автор топика
Ответ на: комментарий от crutch_master

Эээ. У меня рабочий проект, который надо было поправить еще вчера.

Такой подход не всегда работает.

Коллега грит, что это нормально и приходится по неделе колупаться со всякой мелкой хернёй. Но меня совсем что-то не устраивает такой подход.

По неделе колупаться со всякой мелкой хернёй это не нормально.

Legioner ★★★★★
()
Ответ на: комментарий от crutch_master

у вас там микс из версий библиотек. Обычно такая херня бывает, когда одна библиотека скомпилированна с другой версии X, а в рантайме ей сунули Y, причём там может и X есть, но в classpath находится дальше и потому не грузится.

Deleted
()
Ответ на: комментарий от Deleted

у вас там микс из версий библиотек.

Возможно. Где посмотреть, какие версии spring/boot/jpa/etc с какими дружат?

crutch_master ★★★★★
() автор топика
Ответ на: комментарий от crutch_master

в твоей системе управления зависимостями 8)

в общем случае кури 'mvn dependency:tree'

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

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

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

Бежать некуда особо.

в твоей системе управления зависимостями

Нуууу.. Тут в pom.xml некоторые версии руками проставили. Хотя, это всё равно не помогает. Тут тесты - spring boot, конфиг - spring.xml, и, насколько я понимаю, в spring boot конфиги завозятся по-другому.

crutch_master ★★★★★
() автор топика
Последнее исправление: crutch_master (всего исправлений: 2)
Ответ на: комментарий от crutch_master

Хотя, это всё равно не помогает.

Распечатываешь мануал по мавену. Сворачиваешь в трубочку и набиваешь толчёными мыслями. Потом вдумчиво куришь сидя на подоконнике с котом.

ps. можно конечно, просто прочитать доку, но тыж не хочешь

Deleted
()
Ответ на: комментарий от Deleted

ps. можно конечно, просто прочитать доку, но тыж не хочешь

Какую например? Тестовый проект собирается и отрабатывает. На компе того парня, кто это делал тоже всё отрабатывает (правда через раз).

crutch_master ★★★★★
() автор топика
Ответ на: комментарий от crutch_master

Как там в 98-ом, без гугла?

Я в один прекрасный день сел за комп и написал бухгалтерскую систему на spring+jdbc. Не отходя, таззать, от гугла :)

Deleted
()
Ответ на: комментарий от Deleted

Понятия что такое maven/spring/jdbc/hibernate/rest api и вообще любой вэбни не имел вооообще. Ибо упоротый сишник.

Deleted
()
Ответ на: комментарий от crutch_master

org.springframework.data.repository.config.RepositoryConfigurationSource.getAttribute(Ljava/lang/String;)Ljava/util/Optional;

Найди в исходниках спринга этот класс, пощелкай по версиям и найди в какой версии был метод с такой сигнатурой, потом найди с какой версией у тебя собран проект, потом посмотри какая сволочь её затерла (я по граф представлению в иде обычно ищу), пофикси и дальше надейся что остальные части проекта будут совместимы с этой версией спринга. Альтернатива - замени несовместимую версию билиотеки.

ya-betmen ★★★★★
()
Ответ на: комментарий от crutch_master

Ты издеваешься что ли? Какой в жопу strace?

Чтобы создать XmlApplicationContext, тебе нужно указать путь до файла в Java коде

Нужно искать, где делается на него оператор new на ClassPathXmlApplicationContext или XmlBeanFactory, и дальше что с контекстом происходит - откуда он подсасывается

В отладчике, в IDE смотреть это надо

Коллега грит, что это нормально и приходится по неделе колупаться со всякой мелкой хернёй.

когда ты нифига не знаешь, как устроен проект, и пытаешься с помощью такой-то матери и strace что-то узнать - да, нормально. Что там недели - можно месяцами искать. Вон в SETI ищут инопланетян в системе TRAPPIST-1 полным перебором, почему бы вам так не делать лол?

но здоровые люди обычно изучают, как устроен проект и его фреймворки, и все эти вопросы решаются не «по неделе», а за считаные секунды. За это понимание и способность совершать осмысленные действия, собственно, бабло и платится

да, в Spring (как и в любом другом сложном софте) бывают очень неприятные баги. Но они выглядят совершенно не как «не знаю, откуда сосётся XML»

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 3)
Ответ на: комментарий от crutch_master

Тут тесты - spring boot, конфиг - spring.xml, и, насколько я понимаю, в spring boot конфиги завозятся по-другому.

в спринге конфиг можно загружать откуда угодно, хоть из вордовского .docx. На каждый такой формат есть специальная фэктори

стандартных путей конфигурирования сейчас три: XML, Java (@Configruation+аннотации) и Groovy

SpringBoot - это по сути, сборник наиболее часто используемых для конфигурирования аннотаций. Из предположения, что твой проект работает исключительно в режиме аннотаций. Это нужно, например, чтобы можно было по-быстрому с нуля создать новый проект

между схемами настройки поддерживается некое взаимодействие (пусть и ограниченное). Ты можешь из аннотаций подгружать XML, и наоброт: https://memorynotfound.com/mixing-xml-java-config-spring/

иначе говоря, если у тебя есть какой-то легаси xml файл с описанием контекста, ты можешь ничего не переписывая влить его в SpringBoot с помощью @ImportResource внутри @Configuration

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 2)
Ответ на: комментарий от Deleted

Как там в 98-ом, без гугла?
Я в один прекрасный день сел за комп и написал бухгалтерскую систему на spring+jdbc. Не отходя, таззать, от гугла :)

Если бы я всё писал по гайдам у меня бы тоже проблем не было.

crutch_master ★★★★★
() автор топика
Ответ на: комментарий от stevejobs

new на ClassPathXmlApplicationContext или XmlBeanFactory

В трейсе нет ничего такого. Вообще, когда я гуглю что-то по спрингу возникает такое ощущение, что он у всех разный. Решилось всё тем, что тесты у него работают только через IDE. И я вообще не представляю что там внутри происходит. Таки вы считаете, что труЪ вей - это брать дебагер в зубы и ковырять сорцы?

crutch_master ★★★★★
() автор топика
Ответ на: комментарий от crutch_master

Куда вались со спринга?

Tapestry 5

Есть что-нибудь по проще без магии и чёрных ящиков?

Магия только в твоей голове. Нормальный разраб берёт в руки отладчик и спускается до самых кишок, чтобы понять как оно всё работает. Благо OpenSource и нормальные IDE и не как раньше с .NET - засудят, если полезешь смотреть сырцы (пусть сейчас и не так, но душок остался навсегда).

foror ★★★★★
()
Последнее исправление: foror (всего исправлений: 1)
Ответ на: комментарий от foror

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

Я ленивый разраб. Мне не охота каждый раз ковыряться в кишках, да и я не вижу перспектив в этом занятие. По треду уже понятно, что спринг - это еще один сраный комбайн, который работает хорошо лишь до того момента, пока всё идёт так, как задумывали его разработчики. Шаг влево и начинаются пляски.
Пойду по микросервисам угорать. Хоть там и будет тот же спринг, но это хотя бы много мелких кучек дерьма, а не одна большая.

crutch_master ★★★★★
() автор топика
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от foror

Да на спиннере вертел я эти ваши монолиты.
\me подкатал штаны и уехал на гироскутере.

crutch_master ★★★★★
() автор топика
Последнее исправление: crutch_master (всего исправлений: 2)
Ответ на: комментарий от crutch_master

Читаешь документацию, смотришь видео на ютубе, изучаешь исходники фреймворка, ходишь в дебагере - словом, ПОГРУЖАЕШЬСЯ в технологию с головой

Эксперт как раз и есть тот человек, который максимально погружен в свою область

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

stevejobs ★★★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.