|
|
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Последние 2 недели ковыряю спринг... В инете масса инфы о нем, что он и зачем. И вроде технически все понятно. Создаем классы JavaBean, описываем их в контексте спринга и можем использовать в приложении. Можем иньектить в код... И если со всякими Spring Security или Spring MVC все четко, логично и понятно. То вот все эти 2 недели в мозгу бьется только одна мысль "нахрена нужен IoC в спринге" ? Смотрю кучу примеров в инете, походу у большинства "спринг головного мозга". Перерыл кучу проектов на гитхабе по этой теме, искал пример который наглядно покажет, не КАК использовать спринг а НАХРЕНА его вообще использовать... Особенно радуют фразы типа "И вот теперь, вместо инициализации поля, мы можем загрузить контекст из xml, создать фабрику и из этой фабрики инициализировать поле"... т.е. вместо одного просто действия, делать десяток сложных... простой вопрос накуа? ну будет вместо Код: java 1. вот так Код: java 1. 2. Что изменится-то? или зависимость от MyClass куда-то мифическим образом денется? Все говорят о модульности спринг приложений... Если у меня приложение модульное, разбито на отдельные классы и т.д., то спринг сделает его еще модульнее? Ну так блин какая нахрен разница как именно инициализируется нужный класс? Да, можно сделать различные реализации одного и тогоже класса и менять их в конфигах спринга. А разве интерфейс+несколько реализаций не делают тоже самое? Зачем переусложнять простой механизм? Зачем вообще иньектить один объект во все классы через спринг, когда тоже самое можно сделать через статические классы? В общем люди добрые, приведите пожалуйста реальный пример из жизни, где использование спринга действительно дает какие-то бенефиты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 04:43:21 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Декларативные транзакции например. А так-да, тащемта, спрингненужен. С приходом понимания архитектуры проекта возникает непреодолимое желание удалять из него спринг. Но, как правило, в энтерпрайзе, где говнокода 99%, и что-то поделать с этим затруднительно, спринг вносит хотя бы какой-то порядок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 05:38:58 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Ну и вообще, проблемы лучше решать по мере поступления - если появляется проблема, для которой спринг является решением, можно применять спринг. Примеры же не из жизни, а как раз чтобы показать как можно подробнее применение спринга, странно ожидать от примеров чего-то иного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 05:45:41 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Да вы чо??? Понятно, что для отдельно взятого приложения, построенного на своих классах, он нафиг сдался (хотя приложение приложению рознь). Пример из жизни: есть веб-приложение и бекэнд, тут все просто; есть "админка" - АРМ "не для всех" на флексе, флекс/флеш через GraniteDS, во-первых, реализует Remote Procedure Call (RPC), во-вторых, открывается комет-соединение для управления поведением системы и событиями в реальном времени; для нормального управления событиями использую ActiveMQ; само собой - Hibernate; кроме SpringMVC активно используется Spring Security; на начальных этапах был Quartz (спринг также реализует Cron, поэтому отказались); кусок клиента использует DWR. К чему я это все ... не будь каркаса в лице спринга, я бы замахался все кусочки воедино собирать. Даже сложно себе представить, чтобы в уже настроенной и функционирующей системе (без спринга) пришлось бы что-то значительное менять - волосы шевелятся. Я совершенно не теоретик и многие вещи понимаю больше по наитию и следую эмпирическим путем, другими словами, если бы пришлось спринг раскрутить по винтикам, то обратно я бы его не собрал ))). Но даже при этом отлично отдаю себе отчет, что без него (или аналогов) пришлось бы очень, очень туго. Он жутко облегчает работу в крупном проекте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 07:40:13 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Ищущий ЗнанияВ общем люди добрые, приведите пожалуйста реальный пример из жизни, где использование спринга действительно дает какие-то бенефиты. тебе его никто не приведёт.)) - спринг, это идеология (как в 1С - конфигурирование). Отсюда все издержки. Если молиться на одного бога, то становишься конфигурастом (1С) и забываешь что такое статические классы, ООП и утилиты. В технологиях обычно, всё качается как маятник - кинулись на XML, потом на веб-сервисы, потом на облака, потом на _декларативное_ конфигурирование тьфу, программирование аннотациями. Т.е. делай проекты как с ним, так и без него. ______________________________________________ "Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн. AutoPOI.ru — ГИС-технологии для Oracle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 08:46:26 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
IDVsbruckДаже сложно себе представить, чтобы в уже настроенной и функционирующей системе (без спринга) пришлось бы что-то значительное менять - волосы шевелятся странно. Если взять логичный проект, где модульность и инкапсуляция в классах. То как люди его меняют? И в чём проблема посмотреть проект? Вот этими фразами, и понятно - Спринг - Бог. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 08:49:12 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Кстати, MS, в своё время, отказалась от технологии COM. По причине: Увеличивает связность проектов программистами, т.к. их стало слишком легко делать. Весь проект испещрён вызовами интерфесов туда-сюда. Надо и не надо. То же самое с инжекцией всего и во вся друг с другом (километровые простыни описания связей). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 08:54:32 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Давайте без фанатизма рассмотрим простой вариант: У нас есть сервис UserService с простыми CRUD операциями. У нас есть бизнес логика где ипользуется данный сервис. С вашей логики мы просто делаем вот так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. Дальше так как мы выделили интерфейс для нашего сервиса значит есть и другие реализации, поэтому скорей всего метод init будет иметь параметр Код: java 1. 2. 3. 4. 5. Теперь представим что у нас бизнес логика использует 3 сервиса, добавляем ещё параметры? А лучше напишем фабрику которая учтет все зависимости нашего SomeBean от всех сервисов и уже вернет готовый объект. Вот и получается что мы так или иначе придём к тому что начнём писать свой IoC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 09:35:58 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
GregTk, Класс который ни с того ни с сего стал использовать 3 чужих класса требует рефакторинга. Т.е. изменения логики кода. Ссылка на требуемые при этом 3 объекта 1 процент работы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 10:17:14 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Волшебная фабрика учитывающая все зависимости предметной области - иллюзия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 10:20:11 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Petro123, Это мне напоминает троллинг. :) Я немогу уловить вашу точку зрения, вы говорите что spring это идеология, покажите как тогда у вас без IoC. Как вы пишите тесты и поднимаете среду для тестирования. Утверждение что не может быть зависимостей от 3 классов это чушь. У меня может быть сервис проверки прав, сервис отправки сообщений по sms и по email. Да много можно придумать вариантов и с многими я сталкивался. Главный принцип Single Responsibility и IoC его решает на ура. Жду от вас примера работы без IoC. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 10:30:35 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
GregTk, Троллинг у тебя. Нельзя делать пример зависимостей без кода использования их. Свою т.з. я сказал -умей писать с ним и без него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 10:49:03 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Petro123, Без конкретики всё это пустые слова и троллинг. Как будет пример так и поговорим, а постулатами каждый может говорить. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 11:41:29 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
GregTk, Конечно). Мне твой довод тоже бла бла. У автора лучше) Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 12:16:40 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
тут два вопроса. 1 - зачем ioc, 2 - зачем ioc в спринге. ответ на порос 2 -- поскольку спринг - набор библиотечных классов, то почему бы и нет. ioc- как универсальный механизм конфигурирования, чтобы не изобретать велосипеды. Спринг - как либа, дающая эту идеологию. в реальных приложениях где много классов у класса поля должны ссылаться на другие классы. Таким образом набор обьектов представляет собой некий граф. И если граф большой, то его создание - еще тот геморой. У меня вот есть проект. Изначально он был небольшой, все было ок, когда разросся, и структура стала чуть больше, то стало видно, что нужен некий универсальный конфигуратор, которым может стать спринг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 12:39:40 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
авторЧто изменится-то? или зависимость от MyClass куда-то мифическим образом денется? Теоретически это дает возможность легко писать юнит тесты, в которых тестируется только один класс, а все остальные классы замоканы. На практике все равно такие тесты никто не пишет, потому что в яве большого толка от них нет (простые ошибки и так отлавливаются компилятором), а сами такие тесты выглядят не очень органично в силу особенностей языка (сложно делать моки и стабы). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 13:25:20 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Ищущий ЗнанияЧто изменится-то? или зависимость от MyClass куда-то мифическим образом денется? Один объект перестаёт управлять жизненым циклом другого. Эта зависимость и выносится из всех классов в отдельный контейнер. Жизненым циклом управляет сам контейнер. Вместо того чтобы управление было размазано по всем классам. Это было ещё задолго до Spring, например в EJB, где ссылку на бин можно было получить только через JNDI. Это тоже IoC, но не через Dependency Injection, а через Service Locator. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 13:26:30 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Класс который ни с того ни с сего стал использовать 3 чужих класса требует рефакторинга. Т.е. изменения логики кода. Ссылка на требуемые при этом 3 объекта 1 процент работы. Отличный аргумент, полностью согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 13:28:09 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Я бы лучше ввел в яву такую конструкцию. Например, есть static функция Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Теперь надо протестировать, но мешает зависимость от static функции. Добавляем в тестовый класс функцию с такой же сигнатурой как EmailUtils.sendEmail Код: sql 1. 2. 3. 4. 5. 6. 7. 8. И вызываем новую конструкцию with_patch Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 13:44:41 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪЯ бы лучше ввел в яву такую конструкцию. Например, есть static функция ... Mocking static methods with Powermock ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 13:55:01 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Вот так вот. Из грязи сразу в князи. Нет пора решительно проводить классовую сегрегацию среди программеров. Искренне посмеялся над вопросом. Почему-то возникла аналогия. Строитель сидит на сройке, жуёт сендвич и громко рассуждает на тему зачем ему нужна общая теория относительности. А? Зачем? У него есть уровень, отвес, и угольник. Какие скажите ему с этого бенефиты? А никаких. Вопрос к автору. Какова его сфера деятельности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 13:56:28 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
авторMocking static methods with Powermock Это очень круто, огромное спасибо за ссылку. Но как оно работает? Зачем вообще нужны какие-то сервисы, если можно все делать статик функциями и нормально тестировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 14:49:21 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
maytonВопрос к автору. Какова его сфера деятельности? Наверно надо пояснить с чего вдруг задался таким вопросом. По роду деятельности я программист на Java почти 3 года, но довольно узкоспециализированный. В основном это десктопный софт, SWING и прочии плюшки. Софт связан с финансами, и хоть алгоритмически он довольно сложен, технически реализация довольно простая. Понадобилась внутренняя прога, что-то вроде проката, сотрудники берут довольно дорогое, серийное оборудование и должные его вернуть. Надо вести учет кто, когда и что взял и когда должен вернуть. Сейчас это xls файл, расшаренный по сети. Что вносит достаточно много неудобств. Решили сделать web проектик который эту задачу решит. А так как по работе сейчас загрузка минимальная и есть желание поковырять JEE, руководство разрешило своими силами делать. Опять же оно заинтересовано в моем развитии ) и что радует, спешки никакой нет, никто не требует "вчера" эту прогу. В общем сложилась благоприятная ситуация по изучать новое и попробовать это на реально проектике, пусть и простом. Стал изучть на чем щас делают web ынтырпрайз. Практически сразу наткнулся на спринг. Стал его ковырять. Пробовать. Для view выбрал vaadin. Абсолютно везде в инете говорят, что надо использовать спринг как клей для модулей проекта. Но я сколько примеров не видел, они все притянуты за уши и не объясняют а в чем собственно цимес. Почему описывать инициализацию объектов "левой ногой в прыжке с переворотом" (это я про xml конфиги спринга) - это круто, а инициализировать их в калсссе стандартно, одной строкой через конструктор это плохо. Может я просто не делал действительно больших энтерпрайзных проектов, поэтому и не понимаю зачем спринг. Из примеров в этом топике, единственный момент который хоть как-то показался похожим на правду, это когда бизнес логика очень сложная и очень сильно связана, много объектов друг от друга зависят, тогда вместо конструкторов с 5-7 полями действительно может удобнее через контейнер их инициализировать. Но я всегда боролся с такой сложностью. Считаю это ошибкой архитектуры если такие конструкторы приходится делать. Собственно, почему я вообще не забил на это. И не сделал как привык. Из инета я понял, что знание спринга востребовано рынком и есть смысл его в деле пощупать. К тому же может это действительно та самая "серебрянная пуля", которая реально облегчит разработку и сопровождение проекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 15:03:56 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪЭто очень круто, огромное спасибо за ссылку. Но как оно работает? Манипуляции с байткодом и класслоудингом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 15:15:59 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪЯ бы лучше ввел в яву такую конструкцию. Например, есть static функция Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Шарик, поздравляю тебя, ты - балбес. Видимо завести notificationservice избавившись от зависимости от статического EmailUtils (с небось тоже гвоздями прибытыми настройками и темплейтами сообщений) видимо не судьба. ну-ну. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 15:34:36 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38186531&tid=2129690]: |
0ms |
get settings: |
20ms |
get forum list: |
22ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
78ms |
get topic data: |
20ms |
get forum data: |
5ms |
get page messages: |
87ms |
get tp. blocked users: |
2ms |
| others: | 439ms |
| total: | 687ms |

| 0 / 0 |
