|
|
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Ещё один плюс - библиотеки. Когда нужно предоставить конфигурируемую библиотеку, её конфигурацию удобно сделать на спринге, чтоб пользователь библиотеки не занимался декомпиляцияй и бранчеванием для добавления копеечных фич. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 18:06:30 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪСмотри, account helper скорее всего нужен как часть какого нибудь TransactionHelper. TransactionHelper тоже будет существовать в трех ипостасях: transactionHelperForWeb, transactionHelperForCron, accountHelperForMobile? ты сейчас искусственно пытаешься усложнить задачу выдуманного примера, не озвучив финальных требований к архитектуре. без этого сложно сказать что-то определенно. Так чисто абстрактно - да, нам понадобится столько TransactionHelper, сколько нужно отличных поведений. А может при разумной постановке задачи AccountHelper является ненужной сущностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 18:10:05 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Лагманеё конфигурацию удобно сделать на спринге, чтоб пользователь библиотеки не занимался декомпиляцияй и бранчеванием для добавления копеечных фич.опять же таки, а у кого-то несварение желудка на почве xml. ему может Multibinder больше по душе ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 18:12:07 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
и мы написали свой google guice Мы ничего не написали - ноль строчек инфраструктурного кода, не относящегося к приложению. scope создаваемых объектов Есть два скоупа - реквест и аппликейшен, создаешь под каждый свой класс, в конструктор первого передаешь второй. как эту конфигурацию частично переиспользовать в тестах, заменив во всех созданных дао один коннект другим А как это делается в спринге? Уверен, что неудобнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 18:16:52 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪДоказательство что спринг не нужен: 1)Берете свой application.xml 2)Объявляете класс с названием Application.java. Для каждого бина в application.xml создаете одноименное поле в этом классе и инициализируете его вызовом конструктора с теми же параметрами как в application.xml 3)Другие классы не меняются. 4)Удаляете спринг из проекта. Таким образом проведен рефакторинг, который доказывает ненужность спринга. В целом - да. Для проекта на пару дней работы именно так и делаю. Spring не единственный IoC и, возможно, как IoC, не самый-самый. А вот на большом проекте, куда без всех его плюшек? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 18:20:00 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
chpashaЛагманеё конфигурацию удобно сделать на спринге, чтоб пользователь библиотеки не занимался декомпиляцияй и бранчеванием для добавления копеечных фич.опять же таки, а у кого-то несварение желудка на почве xml. ему может Multibinder больше по душе ;) Мне вот тоже guice по душе. Спринг в последние несколько лет првератился в god-framework. Все непрозрачно, размазано, куча хлама в класспасе, дебажить спринг вообще капец. И вопрос привычки тоже игрет роль. Вот скажи, у тебя был реально крупный проект на guice? Меня тоже сначало ломало, но теперьмне спринг кажется адом. Ну я про случай, когда нужен именно ioc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 18:20:15 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
ты сейчас искусственно пытаешься усложнить задачу выдуманного примера, не озвучив финальных требований к архитектуре. А кто написал этот пост, не ты ли: в этом примере прекрасно все: и статический метод трансфера средств, делающий невозможным существование более одной реализации, и статический же способ оповещения, так же не дающий никакой возможности в другом месте посылать например вместо мыла смс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 18:21:01 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪМы ничего не написали - ноль строчек инфраструктурного кода, не относящегося к приложению. класс application (если я правильно понял идею) является искусственным образованием, хранящим ссылки на все необходимые экземпляры классов. Йуный джавистЪЕсть два скоупа - реквест и аппликейшен , создаешь под каждый свой класс, в конструктор первого передаешь второй. да, расширяем велосипед. Йуный джавистЪкак эту конфигурацию частично переиспользовать в тестах, заменив во всех созданных дао один коннект другим А как это делается в спринге? как-то так Код: xml 1. 2. 3. 4. 5. 6. 7. Код: xml 1. 2. 3. 4. Код: xml 1. 2. 3. 4. Йуный джавистЪУверен, что неудобнее. ясный пончик Йуный джавистЪты сейчас искусственно пытаешься усложнить задачу выдуманного примера, не озвучив финальных требований к архитектуре. А кто написал этот пост, не ты ли: пример же твой. сначала ты его выдаешь нагора, потом говоришь, что он условный. я на него даю условное решение. после этого ты заявляешь, что у нас какой-то transferhelper есть, я прошу озвучить абстрактную постановку задачи. что не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 20:18:48 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
забыл никСпринг в последние несколько лет првератился в god-framework мне так не показалось. он безусловно умеет много чего. но оно все лежит в своих либах, имеет свою доку, и если мне не надо, никак не мешает. например spring mvc для меня многие годы просто не существовал. забыл ник дебажить спринг вообще капец. почему? забыл никВот скажи, у тебя был реально крупный проект на guice? отвлекаясь от понятия "реальной крупности"...нет. юзал только на андроиде, ну и tapestry-iоc (на него сильно похож), впрочем tapestry поддерживает spring-ioc. забыл ник Меня тоже сначало ломало, но теперьмне спринг кажется адом. Ну я про случай, когда нужен именно ioc лично я не сложил окончательного мнения. в целом это те же яйца только в профиль - вместо xml модули. вот что я действительно не люблю, так это раскидывать по коду аннотации. xml он всегда сбоку, сегодня есть, завтра нет. а вот аннотации, они гвоздями прибиты к классам. ну и поддержка IDE для спринга, подозреваю, сильно лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 20:30:37 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
chpashaВ 90% случаев вообще нет никаких тестов. Это понятно - если проект активно развивается, то нет времени писать тесты, все фигачат чтобы как можно скорее выдать новую версию. бывает. лично я тоже часто дописываю тесты уже потом, когда есть время, или наступил в каком-то месте на грабли. Если честно, я уже перестал даже считать, сколько раз они меня выручали. а есть пару мест, в которых без тестов вообще нереально проверить правильность работы. оно понятно, что обстоятельства часто сильнее нас. просто некоторые как-то пытаются с этим бороться, а другие прячутся за "у нас не было времени". а чаще всего просто лень.[/quot] +1 Я тут как-то раз потратил 6 часов на написание теста (отвлекаясь естественно). Пока писал, долго думал по поводу эффективности модульного тестирования, его применимости и прочего. Но когда нашел 2 не найденных бага в протестированном тестировщиками коде - так думать перестал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 21:06:30 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Ищущий ЗнанияТо вот все эти 2 недели в мозгу бьется только одна мысль "нахрена нужен IoC в спринге" ? IoC позволяет делать код, удовлетворяющий следующим принципам (по SOLID): 1. Поддерживания принципа Open/closed principle; 2. Поддержания принципа Interface segregation principle; 3. Поддержания принципе Dependency inversion principle (ну, точнее он это и есть). Собственно, поняв эти принципы вы сможете понять прелесть IoC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 21:13:52 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
как-то так Мой вариант - по аналогии с DAO.xml создаете DAO.java. Код: sql 1. 2. 3. 4. 5. Затем Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 21:45:19 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
На всякий случай уточню тело метода makeDao Код: java 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 21:48:39 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Последний фикс Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 21:53:52 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
да пофиг, идея понятна. ты делаешь тоже самое, только в коде. и приблизительно описываешь идею guice - там тоже типа Application (AbstractModule). т.е. фактически изобретаешь велосипед. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 21:58:57 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
chpashaтипа Application (AbstractModule) не совсем конечно (вернее совсем не), но имеется в виду, что конфигурация зависимостей тоже происходит в коде модуля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 22:02:52 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Напомните мне, почему тащить в статики контекстно-зависимые вещи - плохо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 22:33:55 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Ищущий Знания, 1. Прочесть Вольный перевод статьи Мартина Фаулера "Inversion of Control Containers and the Dependency Injection pattern" или оригинал(там же есть на него ссылка). Еще: Нил Форд Архитектура приложения описывает основные крупные части, составляющие приложение. Например, в мире Java архитектура приложения описывает две вещи: комбинацию программных инфраструктур, используемую для создания конкретного приложения — т.н. архитектуры уровня инфраструктур — и более традиционное логическое разделение обязанностей, для которого я оставлю наименование архитектура приложения. Выделение архитектуры инфраструктур как отдельной сущности имеет смысл потому, что большинство практикующих специалистов по объектно-ориентированным языкам пришли к выводу, что отдельные классы как механизм повторного использования кода неэффективны. (Когда в последний раз вы загружали из Интернета для использования в проекте один-единственный класс?) Единица повторного использования в современных объектно-ориентированных языках — это библиотека или программная инфраструктура. При запуске нового проекта на языке с мощным набором программных инфраструктур, таком как язык Java, одной из первых архитектурных проблем является архитектура приложения на уровне инфраструктуры. Этот стиль повторного использования настолько глубоко укоренился в мире Java, что уже пора говорить о Java не как об объектно-ориентированном языке, а как о инфраструктурно-ориентированном . Во многих отношениях, архитектура уровня программной инфраструктуры представляет физическую структуру, описываемую конкретными строительными блоками. Эволюционирующая архитектура и стихийное проектирование: Исследование архитектуры и проектирования 2. Уяснить разницу между библиотекой и фреймворком. Суть этой разницы проста: когда мы используем нечто чужое "внутри" своего кода - это библиотека. когда свое вписываем "внутрь" чужого - это фреймворк. Например Swing - это библиотека. А NetBeans RCP или Eclipse RCP - фреймворк. Задуматься - почему появились фреймворки 3. Поднатужится и представить разработку в которой учавствуют более 3ех человек, на разных континентах, при этом уже к середине проекта более 50% программистов будут новыми. Прикинуть способы уменьшения транскационных издержек при разработке, оптимизации бизнес-процессов в такой разработке. "3 года одиноко программирую" - совсем другой опыт. На основе его - сложно показать проблемы возникающие при разработке, и соответственно - подходы которые применяются для их устранения. В частности - применение IoC (DI) фреймворков-контейнеров. Знаю это по себе - как сложно молодым, начинающим программистам это объяснить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2013, 11:26:55 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
SkyNIN2. Уяснить разницу между библиотекой и фреймворком. Суть этой разницы проста: когда мы используем нечто чужое "внутри" своего кода - это библиотека. когда свое вписываем "внутрь" чужого - это фреймворк. Например Swing - это библиотека. А NetBeans RCP или Eclipse RCP - фреймворк. Задуматься - почему появились фреймворки Ничто не мешает использовать фреймворк в роли библиотеки ))) К примеру Equinox можно встроить в обычное EE приложение написанное на спринге. Или наоборот спринг встроить в Equinox в качестве конфигуратора бинов ну или ради того-же спринг-секъюрити... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2013, 15:59:50 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
bajork, bajorkНичто не мешает использовать фреймворк в роли библиотеки идеология фреймворка мешает. Он обязывает использовать его некими правильными способами. Использовать неправильно, неканонически можно, только тогда придется немножко попотеть, нагородить кучу прослоек и просто кода. а с какой целью? bajorkК примеру Equinox можно встроить в обычное EE приложение написанное на спринге. вообще-то к спрингу есть уже решение - Spring DM bajorkИли наоборот спринг встроить в Equinox в качестве конфигуратора бинов ну или ради того-же спринг-секъюрити... Только писать и конфигурировать бины нужно будет - по спринговски. Какая разница что вокруг фреймворка - если писать придется все равно "внутри" него? Куда конкретный IoC контейнер не встраивай - управлять жизненным циклом объекта все равно будет - он. То есть - я не понял с чем Вы не согласны? Я не зря п2. начал фразой - Уяснить разницу между библиотекой и фреймворком. Ваши контр-примеры толи необдуманы, толи не уяснили :) Второе - распространенное явление. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2013, 16:46:48 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
SkyNIN2. Уяснить разницу между библиотекой и фреймворком. Суть этой разницы проста: когда мы используем нечто чужое "внутри" своего кода - это библиотека. когда свое вписываем "внутрь" чужого - это фреймворк. Например Swing - это библиотека. А NetBeans RCP или Eclipse RCP - фреймворк. Задуматься - почему появились фреймворки Я не совсем только понял, к чему это? Какая разница как и что называется? Да хоть горшком назовем спринг, горшком он от этого не станет и кашу в нем не сваришь. Используются вещи все равно согласно документации, если надо встроить предмет в свой проект, то встраиваешь, а надо свой проект встроить в предмет то поступаешь соответственно... Ну появились фреймворки и что с того? Мне лично как-то фиолетово "фреймворк" спринг или "библиотека"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2013, 19:46:51 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
т.е. фактически изобретаешь велосипед Я считаю, что велосипед - это как раз juice или спринг. Подумайте, как ваш код будет выглядеть через 10 лет. Всякий xml и IoC окончательно превратится в говнолегаси (это неизбежно. Условный фаулер не может по 20 лет подряд продавать книги и тренинги по xml и IoC - раз в 5-10 лет приходится выдумывать новую серебряную пулю). А простой, понятный, прямолинейный код - это классика, которая всегда будет актуальна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2013, 20:23:05 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪ, Йуный джавистЪА простой, понятный, прямолинейный код - это классика, которая всегда будет актуальна. Покажите эту классику. Простого, прямолинейного кода давно уж нигде не встретишь, кроме учебников. Студенты даже в курсачах наворачивают. Йуный джавистЪПодумайте, как ваш код будет выглядеть через 10 лет. 19 лет в проф программировании. Начинал с Си. Но судить о 10ти годах от сего момента не берусь. Даже в бизнесе горизонт планирования до 5ти лет в лучшем случае. Хотя там не код пишут, а закапывают миллиарды в заводы и прочие долгосрочные проекты. А вот как герои выбрасывают лисапеды да, наблюдаю все эти 19 лет :) Йуный джавистЪЯ считаю, что велосипед - это как раз juice или спринг. Дело хозяйское - считаете так - НЕ используйте, делов то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2013, 20:57:42 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
Ищущий Знания, Ищущий ЗнанияКакая разница как и что называется? Да хоть горшком назовем спринг, горшком он от этого не станет и кашу в нем не сваришь. Всегда меня забавляет вот что - вы кто такой? Какой уровень ответственности у вас в проекте? Какого размера, сложности проект? Второе - вы пришли с вопросом, почему мир вот так устроен, или к вам пришли за советом, поясни о мудрый и великий? Так вот если вы программировали чего-то там в одиночку или вдвоем-втроем, "в подвале", вдали от мейнстрима, да еще пришли с недоумением новичка - а чего оно и к чему - то это у вас проблемы, а не у того кто вам отвечает. Повторю и вам - не хочется пользовать спринг - да не пользуйте! Пишите все сами и как считаете нужным! И все, и нет никаких проблем. Но если вы хотите понять почему другие используют, то засуньте вначале свое мнение туда где вы его взяли. И потрудитесь "молча" понять что вам рассказывают. Уже потому что ваше мнение - на* никому не нужно, бестолково как мнение того прогремевшего на весь рунет автора антивируса "Иммунитет". Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2013, 21:04:13 |
|
||
|
Spring. Начало. Наверно будет холивар...
|
|||
|---|---|---|---|
|
#18+
SkyNINИ потрудитесь "молча" понять что вам рассказывают. Уже потому что ваше мнение - на* никому не нужно ээээээ как круто обсуждение пошло)). Аффтар ничего тебе не должен. Максимум что он должен форуму, это - не переходить на личности и быть не хамом. Всё)). А так, можно сказать, что и твоё мнение на**. Мы же в публичной бане). Тут пагонов нету)). По существу своё imho скажу ниже) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2013, 09:53:42 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38186905&tid=2129690]: |
0ms |
get settings: |
14ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
45ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
89ms |
get tp. blocked users: |
2ms |
| others: | 314ms |
| total: | 508ms |

| 0 / 0 |
