powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring. Начало. Наверно будет холивар...
25 сообщений из 159, страница 3 из 7
Spring. Начало. Наверно будет холивар...
    #38186797
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё один плюс - библиотеки. Когда нужно предоставить конфигурируемую библиотеку, её конфигурацию удобно сделать на спринге, чтоб пользователь библиотеки не занимался декомпиляцияй и бранчеванием для добавления копеечных фич.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186801
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪСмотри, account helper скорее всего нужен как часть какого нибудь TransactionHelper. TransactionHelper тоже будет существовать в трех ипостасях: transactionHelperForWeb, transactionHelperForCron, accountHelperForMobile?
ты сейчас искусственно пытаешься усложнить задачу выдуманного примера, не озвучив финальных требований к архитектуре. без этого сложно сказать что-то определенно. Так чисто абстрактно - да, нам понадобится столько TransactionHelper, сколько нужно отличных поведений. А может при разумной постановке задачи AccountHelper является ненужной сущностью.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186803
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лагманеё конфигурацию удобно сделать на спринге, чтоб пользователь библиотеки не занимался декомпиляцияй и бранчеванием для добавления копеечных фич.опять же таки, а у кого-то несварение желудка на почве xml. ему может Multibinder больше по душе ;)
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186808
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и мы написали свой google guice
Мы ничего не написали - ноль строчек инфраструктурного кода, не относящегося к приложению.
scope создаваемых объектов
Есть два скоупа - реквест и аппликейшен, создаешь под каждый свой класс, в конструктор первого передаешь второй.
как эту конфигурацию частично переиспользовать в тестах, заменив во всех созданных дао один коннект другим
А как это делается в спринге? Уверен, что неудобнее.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186813
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪДоказательство что спринг не нужен:
1)Берете свой application.xml
2)Объявляете класс с названием Application.java. Для каждого бина в application.xml создаете одноименное поле в этом классе и инициализируете его вызовом конструктора с теми же параметрами как в application.xml
3)Другие классы не меняются.
4)Удаляете спринг из проекта.
Таким образом проведен рефакторинг, который доказывает ненужность спринга.
В целом - да. Для проекта на пару дней работы именно так и делаю. Spring не единственный IoC и, возможно, как IoC, не самый-самый. А вот на большом проекте, куда без всех его плюшек?
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186814
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaЛагманеё конфигурацию удобно сделать на спринге, чтоб пользователь библиотеки не занимался декомпиляцияй и бранчеванием для добавления копеечных фич.опять же таки, а у кого-то несварение желудка на почве xml. ему может Multibinder больше по душе ;)
Мне вот тоже guice по душе. Спринг в последние несколько лет првератился в god-framework. Все непрозрачно, размазано, куча хлама в класспасе, дебажить спринг вообще капец. И вопрос привычки тоже игрет роль. Вот скажи, у тебя был реально крупный проект на guice? Меня тоже сначало ломало, но теперьмне спринг кажется адом. Ну я про случай, когда нужен именно ioc
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186815
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты сейчас искусственно пытаешься усложнить задачу выдуманного примера, не озвучив финальных требований к архитектуре.

А кто написал этот пост, не ты ли:
в этом примере прекрасно все: и статический метод трансфера средств, делающий невозможным существование более одной реализации, и статический же способ оповещения, так же не дающий никакой возможности в другом месте посылать например вместо мыла смс.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186881
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪМы ничего не написали - ноль строчек инфраструктурного кода, не относящегося к приложению.
класс application (если я правильно понял идею) является искусственным образованием, хранящим ссылки на все необходимые экземпляры классов.

Йуный джавистЪЕсть два скоупа - реквест и аппликейшен
, создаешь под каждый свой класс, в конструктор первого передаешь второй.
да, расширяем велосипед.

Йуный джавистЪкак эту конфигурацию частично переиспользовать в тестах, заменив во всех созданных дао один коннект другим
А как это делается в спринге?
как-то так
Код: xml
1.
2.
3.
4.
5.
6.
7.
//dao.xml

<bean id="abstractDao">
   <property name="connection" ref="connection"/>
</bean>

<bean id="myDao" parent="abstractDao"/>



Код: xml
1.
2.
3.
4.
//production 

<bean id="connection" p:url="${productionUrl}"/>
<import location="dao.xml"/>




Код: xml
1.
2.
3.
4.
//test

<bean id="connection"  p:url="${testUrl}"/>
<import location="dao.xml"/>



Йуный джавистЪУверен, что неудобнее.
ясный пончик

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

А кто написал этот пост, не ты ли:
пример же твой. сначала ты его выдаешь нагора, потом говоришь, что он условный. я на него даю условное решение. после этого ты заявляешь, что у нас какой-то transferhelper есть, я прошу озвучить абстрактную постановку задачи. что не так?
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186887
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никСпринг в последние несколько лет првератился в god-framework
мне так не показалось. он безусловно умеет много чего. но оно все лежит в своих либах, имеет свою доку, и если мне не надо, никак не мешает. например spring mvc для меня многие годы просто не существовал.

забыл ник дебажить спринг вообще капец.
почему?

забыл никВот скажи, у тебя был реально крупный проект на guice?
отвлекаясь от понятия "реальной крупности"...нет. юзал только на андроиде, ну и tapestry-iоc (на него сильно похож), впрочем tapestry поддерживает spring-ioc.


забыл ник Меня тоже сначало ломало, но теперьмне спринг кажется адом. Ну я про случай, когда нужен именно ioc
лично я не сложил окончательного мнения. в целом это те же яйца только в профиль - вместо xml модули. вот что я действительно не люблю, так это раскидывать по коду аннотации. xml он всегда сбоку, сегодня есть, завтра нет. а вот аннотации, они гвоздями прибиты к классам. ну и поддержка IDE для спринга, подозреваю, сильно лучше.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186905
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaВ 90% случаев вообще нет никаких тестов. Это понятно - если проект активно развивается, то нет времени писать тесты, все фигачат чтобы как можно скорее выдать новую версию.
бывает. лично я тоже часто дописываю тесты уже потом, когда есть время, или наступил в каком-то месте на грабли. Если честно, я уже перестал даже считать, сколько раз они меня выручали. а есть пару мест, в которых без тестов вообще нереально проверить правильность работы. оно понятно, что обстоятельства часто сильнее нас. просто некоторые как-то пытаются с этим бороться, а другие прячутся за "у нас не было времени". а чаще всего просто лень.[/quot]
+1
Я тут как-то раз потратил 6 часов на написание теста (отвлекаясь естественно). Пока писал, долго думал по поводу эффективности модульного тестирования, его применимости и прочего. Но когда нашел 2 не найденных бага в протестированном тестировщиками коде - так думать перестал.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186907
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищущий ЗнанияТо вот все эти 2 недели в мозгу бьется только одна мысль "нахрена нужен IoC в спринге" ?

IoC позволяет делать код, удовлетворяющий следующим принципам (по SOLID):
1. Поддерживания принципа Open/closed principle;
2. Поддержания принципа Interface segregation principle;
3. Поддержания принципе Dependency inversion principle (ну, точнее он это и есть).

Собственно, поняв эти принципы вы сможете понять прелесть IoC.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186922
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то так
Мой вариант - по аналогии с DAO.xml создаете DAO.java.
Код: sql
1.
2.
3.
4.
5.
public class DAO.java{
  public static void makeDao(Application app){
    //make dao using app.connection
  }
}


Затем
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public static Application createTestApplication(){
   Application app = new Application()
   app.connection = new Connection("testurl")//
   DAO.makeDao(app)
}

public static Application createProdApplication(){
   Application app = new Application()
   app.connection = new Connection("produrl")//
   DAO.makeDao(app)
}
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186924
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На всякий случай уточню тело метода makeDao
Код: java
1.
2.
3.
4.
5.
public class DAO{
  public static void makeDao(Application app){
     app.myDao = new DAO(app.connection)
  }
}
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186927
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последний фикс
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public class DAOMaker{
  public static void makeDao(Application app){
     app.myDao = new DAO(app.connection)
  }
}

public class ApplicationMaker{
public static Application createTestApplication(){
   Application app = new Application()
   app.connection = new Connection("testurl");
   DAOMaker.makeDao(app)
}

public static Application createProdApplication(){
   Application app = new Application()
   app.connection = new Connection("produrl");
   DAOMaker.makeDao(app)
}
}
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186930
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да пофиг, идея понятна. ты делаешь тоже самое, только в коде. и приблизительно описываешь идею guice - там тоже типа Application (AbstractModule). т.е. фактически изобретаешь велосипед.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186933
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaтипа Application (AbstractModule)
не совсем конечно (вернее совсем не), но имеется в виду, что конфигурация зависимостей тоже происходит в коде модуля.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186949
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напомните мне, почему тащить в статики контекстно-зависимые вещи - плохо?
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187099
SkyNIN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ищущий Знания,

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) фреймворков-контейнеров. Знаю это по себе - как сложно молодым, начинающим программистам это объяснить.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187219
bajork
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SkyNIN2. Уяснить разницу между библиотекой и фреймворком. Суть этой разницы проста: когда мы используем нечто чужое "внутри" своего кода - это библиотека. когда свое вписываем "внутрь" чужого - это фреймворк. Например Swing - это библиотека. А NetBeans RCP или Eclipse RCP - фреймворк. Задуматься - почему появились фреймворки

Ничто не мешает использовать фреймворк в роли библиотеки )))
К примеру Equinox можно встроить в обычное EE приложение написанное на спринге.
Или наоборот спринг встроить в Equinox в качестве конфигуратора бинов ну или ради того-же спринг-секъюрити...
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187242
SkyNIN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bajork,

bajorkНичто не мешает использовать фреймворк в роли библиотеки
идеология фреймворка мешает. Он обязывает использовать его некими правильными способами.
Использовать неправильно, неканонически можно, только тогда придется немножко попотеть, нагородить кучу прослоек и просто кода. а с какой целью?

bajorkК примеру Equinox можно встроить в обычное EE приложение написанное на спринге.
вообще-то к спрингу есть уже решение - Spring DM

bajorkИли наоборот спринг встроить в Equinox в качестве конфигуратора бинов ну или ради того-же спринг-секъюрити...
Только писать и конфигурировать бины нужно будет - по спринговски. Какая разница что вокруг фреймворка - если писать придется все равно "внутри" него?

Куда конкретный IoC контейнер не встраивай - управлять жизненным циклом объекта все равно будет - он.

То есть - я не понял с чем Вы не согласны?

Я не зря п2. начал фразой - Уяснить разницу между библиотекой и фреймворком.
Ваши контр-примеры толи необдуманы, толи не уяснили :) Второе - распространенное явление.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187319
SkyNIN2. Уяснить разницу между библиотекой и фреймворком. Суть этой разницы проста: когда мы используем нечто чужое "внутри" своего кода - это библиотека. когда свое вписываем "внутрь" чужого - это фреймворк. Например Swing - это библиотека. А NetBeans RCP или Eclipse RCP - фреймворк. Задуматься - почему появились фреймворки

Я не совсем только понял, к чему это?
Какая разница как и что называется? Да хоть горшком назовем спринг, горшком он от этого не станет и кашу в нем не сваришь.
Используются вещи все равно согласно документации, если надо встроить предмет в свой проект, то встраиваешь, а надо свой проект встроить в предмет то поступаешь соответственно...

Ну появились фреймворки и что с того? Мне лично как-то фиолетово "фреймворк" спринг или "библиотека"...
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187339
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. фактически изобретаешь велосипед
Я считаю, что велосипед - это как раз juice или спринг.
Подумайте, как ваш код будет выглядеть через 10 лет. Всякий xml и IoC окончательно превратится в говнолегаси (это неизбежно. Условный фаулер не может по 20 лет подряд продавать книги и тренинги по xml и IoC - раз в 5-10 лет приходится выдумывать новую серебряную пулю). А простой, понятный, прямолинейный код - это классика, которая всегда будет актуальна.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187352
SkyNIN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Йуный джавистЪ,

Йуный джавистЪА простой, понятный, прямолинейный код - это классика, которая всегда будет актуальна.
Покажите эту классику. Простого, прямолинейного кода давно уж нигде не встретишь, кроме учебников. Студенты даже в курсачах наворачивают.

Йуный джавистЪПодумайте, как ваш код будет выглядеть через 10 лет.
19 лет в проф программировании. Начинал с Си.
Но судить о 10ти годах от сего момента не берусь. Даже в бизнесе горизонт планирования до 5ти лет в лучшем случае. Хотя там не код пишут, а закапывают миллиарды в заводы и прочие долгосрочные проекты.

А вот как герои выбрасывают лисапеды да, наблюдаю все эти 19 лет :)

Йуный джавистЪЯ считаю, что велосипед - это как раз juice или спринг.
Дело хозяйское - считаете так - НЕ используйте, делов то.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187358
SkyNIN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ищущий Знания,

Ищущий ЗнанияКакая разница как и что называется? Да хоть горшком назовем спринг, горшком он от этого не станет и кашу в нем не сваришь.
Всегда меня забавляет вот что - вы кто такой? Какой уровень ответственности у вас в проекте? Какого размера, сложности проект?
Второе - вы пришли с вопросом, почему мир вот так устроен, или к вам пришли за советом, поясни о мудрый и великий?

Так вот если вы программировали чего-то там в одиночку или вдвоем-втроем, "в подвале", вдали от мейнстрима, да еще пришли с недоумением новичка - а чего оно и к чему - то это у вас проблемы, а не у того кто вам отвечает.

Повторю и вам - не хочется пользовать спринг - да не пользуйте! Пишите все сами и как считаете нужным! И все, и нет никаких проблем.

Но если вы хотите понять почему другие используют, то засуньте вначале свое мнение туда где вы его взяли. И потрудитесь "молча" понять что вам рассказывают. Уже потому что ваше мнение - на* никому не нужно, бестолково как мнение того прогремевшего на весь рунет автора антивируса "Иммунитет".

Удачи.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187602
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkyNINИ потрудитесь "молча" понять что вам рассказывают. Уже потому что ваше мнение - на* никому не нужно
ээээээ как круто обсуждение пошло)).
Аффтар ничего тебе не должен.
Максимум что он должен форуму, это - не переходить на личности и быть не хамом. Всё)).
А так, можно сказать, что и твоё мнение на**. Мы же в публичной бане). Тут пагонов нету)).
По существу своё imho скажу ниже)
...
Рейтинг: 0 / 0
25 сообщений из 159, страница 3 из 7
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring. Начало. Наверно будет холивар...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]