powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring. Начало. Наверно будет холивар...
159 сообщений из 159, показаны все 7 страниц
Spring. Начало. Наверно будет холивар...
    #38186505
Последние 2 недели ковыряю спринг...
В инете масса инфы о нем, что он и зачем.
И вроде технически все понятно.

Создаем классы JavaBean, описываем их в контексте спринга и можем использовать в приложении.
Можем иньектить в код...

И если со всякими Spring Security или Spring MVC все четко, логично и понятно.
То вот все эти 2 недели в мозгу бьется только одна мысль "нахрена нужен IoC в спринге" ?

Смотрю кучу примеров в инете, походу у большинства "спринг головного мозга".
Перерыл кучу проектов на гитхабе по этой теме, искал пример который наглядно покажет, не КАК использовать спринг а НАХРЕНА его вообще использовать...
Особенно радуют фразы типа "И вот теперь, вместо инициализации поля, мы можем загрузить контекст из xml, создать фабрику и из этой фабрики инициализировать поле"... т.е. вместо одного просто действия, делать десяток сложных... простой вопрос накуа?
ну будет вместо

Код: java
1.
MyClass mc = new MyClass();



вот так
Код: java
1.
2.
@autowire
MyClass mc;



Что изменится-то? или зависимость от MyClass куда-то мифическим образом денется?

Все говорят о модульности спринг приложений...
Если у меня приложение модульное, разбито на отдельные классы и т.д., то спринг сделает его еще модульнее?
Ну так блин какая нахрен разница как именно инициализируется нужный класс?
Да, можно сделать различные реализации одного и тогоже класса и менять их в конфигах спринга.
А разве интерфейс+несколько реализаций не делают тоже самое? Зачем переусложнять простой механизм?
Зачем вообще иньектить один объект во все классы через спринг, когда тоже самое можно сделать через статические классы?

В общем люди добрые, приведите пожалуйста реальный пример из жизни, где использование спринга действительно дает какие-то бенефиты.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186510
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Декларативные транзакции например.
А так-да, тащемта, спрингненужен.
С приходом понимания архитектуры проекта возникает непреодолимое желание удалять из него спринг.
Но, как правило, в энтерпрайзе, где говнокода 99%, и что-то поделать с этим затруднительно, спринг вносит хотя бы какой-то порядок.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186513
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и вообще, проблемы лучше решать по мере поступления - если появляется проблема, для которой спринг является решением, можно применять спринг.
Примеры же не из жизни, а как раз чтобы показать как можно подробнее применение спринга, странно ожидать от примеров чего-то иного.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186525
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да вы чо??? Понятно, что для отдельно взятого приложения, построенного на своих классах, он нафиг сдался (хотя приложение приложению рознь).

Пример из жизни: есть веб-приложение и бекэнд, тут все просто; есть "админка" - АРМ "не для всех" на флексе, флекс/флеш через GraniteDS, во-первых, реализует Remote Procedure Call (RPC), во-вторых, открывается комет-соединение для управления поведением системы и событиями в реальном времени; для нормального управления событиями использую ActiveMQ; само собой - Hibernate; кроме SpringMVC активно используется Spring Security; на начальных этапах был Quartz (спринг также реализует Cron, поэтому отказались); кусок клиента использует DWR.

К чему я это все ... не будь каркаса в лице спринга, я бы замахался все кусочки воедино собирать. Даже сложно себе представить, чтобы в уже настроенной и функционирующей системе (без спринга) пришлось бы что-то значительное менять - волосы шевелятся. Я совершенно не теоретик и многие вещи понимаю больше по наитию и следую эмпирическим путем, другими словами, если бы пришлось спринг раскрутить по винтикам, то обратно я бы его не собрал ))). Но даже при этом отлично отдаю себе отчет, что без него (или аналогов) пришлось бы очень, очень туго. Он жутко облегчает работу в крупном проекте.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186528
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищущий ЗнанияВ общем люди добрые, приведите пожалуйста реальный пример из жизни, где использование спринга действительно дает какие-то бенефиты.
тебе его никто не приведёт.))
- спринг, это идеология (как в 1С - конфигурирование).
Отсюда все издержки. Если молиться на одного бога, то становишься конфигурастом (1С) и забываешь что такое статические классы, ООП и утилиты.
В технологиях обычно, всё качается как маятник - кинулись на XML, потом на веб-сервисы, потом на облака, потом на _декларативное_ конфигурирование тьфу, программирование аннотациями.
Т.е. делай проекты как с ним, так и без него.
______________________________________________
"Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн.
AutoPOI.ru — ГИС-технологии для Oracle
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186529
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckДаже сложно себе представить, чтобы в уже настроенной и функционирующей системе (без спринга) пришлось бы что-то значительное менять - волосы шевелятся
странно. Если взять логичный проект, где модульность и инкапсуляция в классах.
То как люди его меняют? И в чём проблема посмотреть проект?

Вот этими фразами, и понятно - Спринг - Бог.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186531
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, MS, в своё время, отказалась от технологии COM.
По причине: Увеличивает связность проектов программистами, т.к. их стало слишком легко делать. Весь проект испещрён вызовами интерфесов туда-сюда. Надо и не надо.
То же самое с инжекцией всего и во вся друг с другом (километровые простыни описания связей).
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186539
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте без фанатизма рассмотрим простой вариант: У нас есть сервис UserService с простыми CRUD операциями.
У нас есть бизнес логика где ипользуется данный сервис.

С вашей логики мы просто делаем вот так:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public class SomeBean {
private UserService userService; = new UserServiceImpl();

public void init(){
     userService = new UserServiceImpl();
}

}



Дальше так как мы выделили интерфейс для нашего сервиса значит есть и другие реализации, поэтому скорей всего метод init будет иметь параметр

Код: java
1.
2.
3.
4.
5.
...

public void init(UserSerice userService){
  this.userService = userService;
}



Теперь представим что у нас бизнес логика использует 3 сервиса, добавляем ещё параметры? А лучше напишем фабрику которая учтет все зависимости нашего SomeBean от всех сервисов и уже вернет готовый объект. Вот и получается что мы так или иначе придём к тому что начнём писать свой IoC.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186544
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTk,
Класс который ни с того ни с сего стал использовать 3 чужих класса требует рефакторинга. Т.е. изменения логики кода. Ссылка на требуемые при этом 3 объекта 1 процент работы.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186545
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Волшебная фабрика учитывающая все зависимости предметной области - иллюзия.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186552
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Это мне напоминает троллинг. :) Я немогу уловить вашу точку зрения, вы говорите что spring это идеология, покажите как тогда у вас без IoC. Как вы пишите тесты и поднимаете среду для тестирования.
Утверждение что не может быть зависимостей от 3 классов это чушь. У меня может быть сервис проверки прав, сервис отправки сообщений по sms и по email. Да много можно придумать вариантов и с многими я сталкивался. Главный принцип Single Responsibility и IoC его решает на ура.

Жду от вас примера работы без IoC. :)
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186561
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTk,
Троллинг у тебя. Нельзя делать пример зависимостей без кода использования их.
Свою т.з. я сказал -умей писать с ним и без него.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186578
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Без конкретики всё это пустые слова и троллинг. Как будет пример так и поговорим, а постулатами каждый может говорить. :)
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186591
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTk,
Конечно). Мне твой довод тоже бла бла. У автора лучше)
Удачи.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186595
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут два вопроса. 1 - зачем ioc, 2 - зачем ioc в спринге.

ответ на порос 2 -- поскольку спринг - набор библиотечных классов, то почему бы и нет. ioc- как универсальный механизм конфигурирования, чтобы не изобретать велосипеды. Спринг - как либа, дающая эту идеологию.

в реальных приложениях где много классов у класса поля должны ссылаться на другие классы. Таким образом набор обьектов представляет собой некий граф. И если граф большой, то его создание - еще тот геморой. У меня вот есть проект. Изначально он был небольшой, все было ок, когда разросся, и структура стала чуть больше, то стало видно, что нужен некий универсальный конфигуратор, которым может стать спринг.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186615
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЧто изменится-то? или зависимость от MyClass куда-то мифическим образом денется?
Теоретически это дает возможность легко писать юнит тесты, в которых тестируется только один класс, а все остальные классы замоканы. На практике все равно такие тесты никто не пишет, потому что в яве большого толка от них нет (простые ошибки и так отлавливаются компилятором), а сами такие тесты выглядят не очень органично в силу особенностей языка (сложно делать моки и стабы).
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186616
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищущий ЗнанияЧто изменится-то? или зависимость от MyClass куда-то мифическим образом денется?

Один объект перестаёт управлять жизненым циклом другого. Эта зависимость и выносится из всех классов в отдельный контейнер. Жизненым циклом управляет сам контейнер. Вместо того чтобы управление было размазано по всем классам.
Это было ещё задолго до Spring, например в EJB, где ссылку на бин можно было получить только через JNDI. Это тоже IoC, но не через Dependency Injection, а через Service Locator.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186617
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Класс который ни с того ни с сего стал использовать 3 чужих класса требует рефакторинга. Т.е. изменения логики кода. Ссылка на требуемые при этом 3 объекта 1 процент работы.
Отличный аргумент, полностью согласен.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186620
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы лучше ввел в яву такую конструкцию. Например, есть static функция
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class AccountHelper{
 public static transferMoney(Account to, Account from){
    //make transfer
    // ...
    //  send email notification
    EmailUtils.sendEmail(to.email);
    EmailUtils.sendEmail(from.email);
 }
}


Теперь надо протестировать, но мешает зависимость от static функции. Добавляем в тестовый класс функцию с такой же сигнатурой как EmailUtils.sendEmail
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
public class AccountHelperTest{
  ..
  public static mockSendEmail(String email){
    //mocked behaviour
    //...
 }
 ..
}


И вызываем новую конструкцию with_patch

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class AccountHelperTest{
  ..
  public static testTransferMoney(){
    with_patch(EmailUtils.sendEmail as AccountHelperTest.mockSendEmail){
       //testing
       //..
       //..
    }
 }
 ..
}
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186629
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪЯ бы лучше ввел в яву такую конструкцию. Например, есть static функция
...

Mocking static methods with Powermock
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186633
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так вот. Из грязи сразу в князи. Нет пора решительно проводить классовую сегрегацию
среди программеров. Искренне посмеялся над вопросом. Почему-то возникла аналогия.
Строитель сидит на сройке, жуёт сендвич и громко рассуждает на тему зачем ему нужна
общая теория относительности. А? Зачем? У него есть уровень, отвес, и угольник.
Какие скажите ему с этого бенефиты? А никаких. Вопрос к автору. Какова его сфера
деятельности?
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186665
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторMocking static methods with Powermock

Это очень круто, огромное спасибо за ссылку. Но как оно работает?
Зачем вообще нужны какие-то сервисы, если можно все делать статик функциями и нормально тестировать?
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186670
maytonВопрос к автору. Какова его сфера деятельности?

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

По роду деятельности я программист на Java почти 3 года, но довольно узкоспециализированный.
В основном это десктопный софт, SWING и прочии плюшки.
Софт связан с финансами, и хоть алгоритмически он довольно сложен, технически реализация довольно простая.
Понадобилась внутренняя прога, что-то вроде проката, сотрудники берут довольно дорогое, серийное оборудование и должные его вернуть. Надо вести учет кто, когда и что взял и когда должен вернуть.
Сейчас это xls файл, расшаренный по сети. Что вносит достаточно много неудобств.
Решили сделать web проектик который эту задачу решит.
А так как по работе сейчас загрузка минимальная и есть желание поковырять JEE,
руководство разрешило своими силами делать. Опять же оно заинтересовано в моем развитии )
и что радует, спешки никакой нет, никто не требует "вчера" эту прогу.

В общем сложилась благоприятная ситуация по изучать новое и попробовать это на реально проектике, пусть и простом.

Стал изучть на чем щас делают web ынтырпрайз. Практически сразу наткнулся на спринг. Стал его ковырять. Пробовать.
Для view выбрал vaadin.

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

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

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

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

Собственно, почему я вообще не забил на это. И не сделал как привык.
Из инета я понял, что знание спринга востребовано рынком и есть смысл его в деле пощупать.
К тому же может это действительно та самая "серебрянная пуля", которая реально облегчит разработку и сопровождение проекта.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186678
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪЭто очень круто, огромное спасибо за ссылку. Но как оно работает?
Манипуляции с байткодом и класслоудингом.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186693
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪЯ бы лучше ввел в яву такую конструкцию. Например, есть static функция
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class AccountHelper{
 public static transferMoney(Account to, Account from){
    //make transfer
    // ...
    //  send email notification
    EmailUtils.sendEmail(to.email);
    EmailUtils.sendEmail(from.email);
 }
}



Шарик, поздравляю тебя, ты - балбес. Видимо завести notificationservice избавившись от зависимости от статического EmailUtils (с небось тоже гвоздями прибытыми настройками и темплейтами сообщений) видимо не судьба. ну-ну.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186697
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищущий Знания,
Совершенно верно. Перекрестные ссылки надо минимизировать. В этом очень помогает IDE контролируя область видимости классов.
В веб парадигма программирования другая). .Сервлеты это не ООП).
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186709
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищущий Знания,
Совершенно верно. Избавлятся от большого количества перекрестных ссылок на классы надо. И IDE в этом помогает областью видимости. Уж не знаю, понимает ли Оно так же хорошо аннотации.
Но! Десктоп и Веб 2-е большие разницы). В вебе парадигма другая. Сервлет это не ООП. Это короткоживущий код за 0000.1 секунды. Поэтому инжекция как наркотик)
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186711
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упс)))). Сам сделал такую ссылку)
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186713
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шарик, поздравляю тебя, ты - балбес. Видимо завести notificationservice избавившись от зависимости от статического EmailUtils (с небось тоже гвоздями прибытыми настройками и темплейтами сообщений) видимо не судьба. ну-ну.
Пример, разумеется, упрощенный.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186714
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищущий ЗнанияАбсолютно везде в инете говорят, что надо использовать спринг как клей для модулей проекта. Но я сколько примеров не видел, они все притянуты за уши и не объясняют а в чем собственно цимес
В чем цимес конкретно спринга или ioc в целом? Если ioc, то хороший пример как не надо привел вумник парой постов выше - в этом примере прекрасно все: и статический метод трансфера средств, делающий невозможным существование более одной реализации, и статический же способ оповещения, так же не дающий никакой возможности в другом месте посылать например вместо мыла смс. К тому же пациент тщетно бьется с проблемой затрудненного тестирования подобного говнокода, при этом авторитетно заявляя, что в ява все равно никто ничего не тестит, проверки на этапе компиляции должно хватить всем, а моки и прочую херню слишком сложно осилить.



Если говорить конкретно о спринге - то тут скорее дела вкуса, почти. Отвлекаясь от того, что в спринге существует огромная инфраструктура по интеграции большинства мыслимых mainstream фреймворков и прочие плюшки, все сводится к тому, нравится ли тебе конфигурация в xml или ты предпочитаешь конфигурацию в коде (тот же спринг, guice, tapestry-ioc). Только под конфигурацией в коде подразумевается нечто вида bind(Service.class).to(MyServiceImpl.class) не new MyServiceImpl() в 10 местах.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186716
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪПример, разумеется, упрощенный.
разумеется
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186720
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в этом примере прекрасно все: и статический метод трансфера средств, делающий невозможным существование более одной реализации, и статический же способ оповещения
Прочитайте пожалуйста мой пост внимательно. Он не о трансфере средств. Это предложение язковой фичи. Пример, иллюстрирующий фичу, надуманный.
и статический же способ оповещения, так же не дающий никакой возможности в другом месте посылать например вместо мыла смс
Все равно придется передавать параметр, как именно слать оповещение, по мылу или по смс. Не вижу разницы между статик и виртуальным методом.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186723
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ведь попытки все и везде в коде сделать динамическим, настраиваемым, подменяемым и есть самое большое зло).
Взять тот же ЕАV .... рефлексию и т.д.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186726
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что в ява все равно никто ничего не тестит, проверки на этапе компиляции должно хватить всем, а моки и прочую херню слишком сложно осилить.

Боюсь, что я не очень понятно изложил свою точку зрения.
что в ява все равно никто ничего не тестит

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

Так на самом деле сложно. Есть JMock, есть EasyMock, у всех разное API, не особо интуитивное.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186733
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪПрочитайте пожалуйста мой пост внимательно. Он не о трансфере средств. Это предложение язковой фичи.
я понял, к чему был пост. проблема в том, что он является хорошим примером того, как можно было сделать по-другому, чтобы вопроса о тестировании статического метода просто не возникло.


Йуный джавистЪи статический же способ оповещения, так же не дающий никакой возможности в другом месте посылать например вместо мыла смс
Все равно придется передавать параметр, как именно слать оповещение, по мылу или по смс. Не вижу разницы между статик и виртуальным методом.
а она есть. потому что идея не в переопределении метода transfer, а в поручении рассылки отдельному сервису (SRP). будь у нас AccountHelper не статический, и имей он интерфейс NotificationService в качестве зависимости, мы бы поимели кучу профитов, как то:
1) легко делается заглушка для тестирования
2) легко подменяется реализация на рассылку по смс, рассылку на jabber, рассылку на что угодно еще или на все вместе. причем не надо передавать никаких "параметров".
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<!-- код (почти)условный  -->

<!-- определяем базовый тип с некими общими настройками -->
<bean id="abstractNotificationService"/>

<bean id="email" parent="abstractNotificationService">
  <property name="templateEngine" value="htmlEngine/>
</bean>

<bean id="sms" parent="abstractNotificationService">
  <property name="templateEngine" value="plainTextEngine/>
</bean>

<!-- или даже так -->
<bean id="mass" parent="abstractNotificationService">
  <property name="notificationServices">
     <list>
        <value ref="email"/>
        <value ref="sms"/>
     </list>
  </property>
</bean>



далее суем нужные реализации туда куда надо. ЕСЛИ ДАЖЕ у нас например тяжелый случай, когда в одном и том же месте нужно одному клиенту послать смс, а другому мыло (а третий ваще не хочет, чтоб его спамили), то как один из вариантов - сохраняем в настройках для клиента (бд, xml, whatever) имя бина и инстанциируем его по имени (да, здесь является недостатком хранение бина в виде текста, НО это место легко контролируется тестами, т.е. если мы опечатались в имени, на этапе теста мы отловим исключение). После этого оповещение при трансфере РЕАЛЬНО легко меняется извне без модификации кода - просто говорим, что у клиента 234646 при трансфере использовать оповещение jabber. И да, нам для этого нужна другая зависимость, что-то типа NotificationServiceProvider , которая опять же таки в зависимости от реализации может доставать настройки клиента из базы, файла или еще откуда и отдавать нашему AccountHelper ту реализацию нотификаций, что требуется.

3) в сервисе рассылки в свою очередь можно легко обеспечить всевозможную кучу (в том числе локализованных) темплейтов сообщений, тоже например по принципу у каждого клиента свой темплейт.

Да, все тоже самое, можно тем или иным способом реализовать в коде, с большей или меньшей степенью гибкости. именно по-этому - это лишь вопрос предпочтения, где конфигурировать. Ну и естественно, подобное мы наворачиваем только если нам подобная гибкость нужна. Но как минимум - это независимость от реализации как перевода денег, так и оповещений.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186741
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После этого оповещение при трансфере РЕАЛЬНО легко меняется извне без модификации кода - просто говорим, что у клиента 234646 при трансфере использовать оповещение jabber. И да, нам для этого нужна другая зависимость, что-то типа NotificationServiceProvider
Так значит все же с модификацией - новый класс NotificationServiceProvider понадобился. Также хочу отметить, что конфиг спринга - тоже код.
Не понимаю, почему я не могу из статик метода залезть в базу, посмотреть как клиент хочет получить оповещение и в зависимости от этого отправить его по смс или емейлом.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186745
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪЯ там писал о тестах, в которых класс тестится в полной изоляции. По моим наблюдениям, в яве такое тестирование применяется редко, чаще тестирование делается на уровне полноценных сценариев.
т.е. unittest :) . мягко говоря странное наблюдение. ну и собственно говоря, само обобщение довольно смелое. я например довольно часто пишу тесты именно для конкретных классов, потому что тестирование целого тандема часто гораздо более затруднительно, особенно когда веб вовлечен - гораздо проще потестировать дао, чем поднимать джетти и генерить клики в селениуме, хотя естественно одно не заменяет другого полностью.

собственно коль скоро речь пошла про тестирование, то здесь конфигурация в xml очень сильно помогает, потому что можно по тому же принципу, что и организация пакетов в ява, подключить различные комбинации "подмодулей", подсунув например пачке дао ссылку на коннект к тестовой базе. да, с помощью кода можно достигнуть схожего эффекта, если взять за основу понятие модуля, существующee в guice и в tapestry-ioc, ну соответственно разбивать конфигурацию на логические модули и подключать те, что надо.


Йуный джавистЪа моки и прочую херню слишком сложно осилить

Так на самом деле сложно. Есть JMock, есть EasyMock, у всех разное API, не особо интуитивное.
да блин, ну фигли сложного? лично я в свое время взял первое попавшееся (EasyMock) и в 20 минут разобрался с минимумом, необходимым, чтобы тесты работали. главное что выбор есть, а разбираться приходится с чем-то так или иначе. когда нету желания разобраться, все кончается тем, что тестов в итоге просто нет.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186758
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪТак значит все же с модификацией - новый класс NotificationServiceProvider понадобился

вообще-то он понадобился еще в тот момент, когда у нас возникла сама постановка задачи - оповещение настраиваемо под клиента. кроме того, когда подобная гибкость не нужна, а нужно разные реализации в разных местах (ну например мобильные клиенты получают смс, веб-клиенты мыло) - нам бы просто хватило двух реализаций NotificationService, клиентский код бы выглядел едино (зависимость от accounthelper), а сам accounthelper имел мы две "конфигурации". А как тоже самое со статическим методом разрулить, если он у тебя повсюду в коде натыкан? А никак. Search&Replace + Find Usages в руки. Оно понятно, что упорство и труд все переколбасят.

Йуный джавистЪ. Также хочу отметить, что конфиг спринга - тоже код.
в некотором смысле. я предпочитаю "конфигурация". если ты о том, что его придется время от времени модифицировать, то да - придется. но не в том дело. вопрос в том, во скольких местах код/конфигурацию придется модифицировать при каждом изменении задачи.

Йуный джавистЪНе понимаю, почему я не могу из статик метода залезть в базу, посмотреть как клиент хочет получить оповещение и в зависимости от этого отправить его по смс или емейлом.
Хехе...если у тебя в статик методах при вызове происходит поностью "динамическая реконфигурация" (а не то, как это было в примере) - то ты просто сделал аналог предложенной мной системы в коде. Т.е. если у тебя статик метод допускает любое количество внутренних реализаций одновременно. Тогда дело упирается просто в то, кому что удобней. Ну отвлекаясь от очевидных проблем с тестированием (и thread safety до кучи). Разве нет?
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186760
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. unittest :) . мягко говоря странное наблюдение.

В 90% случаев вообще нет никаких тестов. Это понятно - если проект активно развивается, то нет времени писать тесты, все фигачат чтобы как можно скорее выдать новую версию. Если есть время писать тесты, то значит проект вяло идет, и кодовая база медленно прирастает. Так оказывается, что большинство кода без тестов.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186762
Йуный джавистЪ Не понимаю, почему я не могу из статик метода залезть в базу, посмотреть как клиент хочет получить оповещение и в зависимости от этого отправить его по смс или емейлом.

В целом конечно можно. Но ИМХО логичнее и удобнее делать 1 класс = 1 действие.
Да и тестить и править такой код проще.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186769
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪт.е. unittest :) . мягко говоря странное наблюдение.

В 90% случаев вообще нет никаких тестов. Это понятно - если проект активно развивается, то нет времени писать тесты, все фигачат чтобы как можно скорее выдать новую версию.
бывает. лично я тоже часто дописываю тесты уже потом, когда есть время, или наступил в каком-то месте на грабли. Если честно, я уже перестал даже считать, сколько раз они меня выручали. а есть пару мест, в которых без тестов вообще нереально проверить правильность работы. оно понятно, что обстоятельства часто сильнее нас. просто некоторые как-то пытаются с этим бороться, а другие прячутся за "у нас не было времени". а чаще всего просто лень.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186770
chpashaДа, все тоже самое, можно тем или иным способом реализовать в коде, с большей или меньшей степенью гибкости. именно по-этому - это лишь вопрос предпочтения, где конфигурировать. Ну и естественно, подобное мы наворачиваем только если нам подобная гибкость нужна. Но как минимум - это независимость от реализации как перевода денег, так и оповещений.

Вот спасибо. Отличный пример. Хоть какая-то приближенность к реальности.
Что-то начало в голове "щелкать" по поводу применения спринга...
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186775
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищущий ЗнанияХоть какая-то приближенность к реальности
что значит хоть какая-то? основано на реальных событиях ;)
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186776
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторкроме того, когда подобная гибкость не нужна, а нужно разные реализации в разных местах (ну например мобильные клиенты получают смс, веб-клиенты мыло)
А откуда берется признак того, мобильный это клиент или веб? Если признак приходит как аргумент в AccountHelper, то AccountHelper может просто передать этот аргумент в статик функцию оповещения.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186782
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то начало в голове "щелкать" по поводу применения спринга...
Доказательство что спринг не нужен:
1)Берете свой application.xml
2)Объявляете класс с названием Application.java. Для каждого бина в application.xml создаете одноименное поле в этом классе и инициализируете его вызовом конструктора с теми же параметрами как в application.xml
3)Другие классы не меняются.
4)Удаляете спринг из проекта.
Таким образом проведен рефакторинг, который доказывает ненужность спринга.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186787
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪавторкроме того, когда подобная гибкость не нужна, а нужно разные реализации в разных местах (ну например мобильные клиенты получают смс, веб-клиенты мыло)
А откуда берется признак того, мобильный это клиент или веб? Если признак приходит как аргумент в AccountHelper, то AccountHelper может просто передать этот аргумент в статик функцию оповещения.
та не, забудь ты про признаки, флаги и параметры. accounthelper это сервис, который делегирует две "ответственности" двум другим сервисам, и оперирует он только теми данными, что нужны непосредственно для выполнения операций. Дальше мы в коде мобильного клиента или вебе или еще где инжектируем (уж как хотите, через код или спринг) разные конфигурации того же самого accounthelper, только в одной рассылкой занимается смс, а другой мыло.
пример для понимания
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
опять таки условный, без привязки к ioc

public WebPage {
   
   @Inject
   private AccountHelper accountHelper;

}

public MobilePage {
  
   @Inject
   private AccountHelper accountHelper;

}

public CronJob {

   @Inject
   private AccountHelper accountHelper;

}



конфигурация

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<bean id="accountHelper" p:accountTransfer="someImpl"/>

<bean id="accountHelperForWeb" parent="accountHelper"
         p:notificationService="sms"/>

<bean id="accountHelperForMobile" parent="accountHelper"
         p:notificationService="email"/>

<bean id="accountHelperForCron" parent="accountHelper"
         p:notificationService="jabber"/>



далее тем или иным удобным для нас способом подсовываем клиентскому коду одну из конфигураций. нетрудно догадаться, что в некоторых из них можно подменить не только реализацию нотификации, но и реализацию трансфера. это способ организации "динамического" поведения, когда имеем конечное количество комбинаций, и нет привязки к каким-то настройкам. Впрочем позже можно будет легко переставить на настройки.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186790
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О чем спор епта?
ТС просто пока не разобрался чем ему поможет Ioc, как только он это сделает, все вопросы отпадут. Будь то спринг джус и т.п.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186791
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
<bean id="accountHelperForWeb" parent="accountHelper"
         p:notificationService="sms"/>

<bean id="accountHelperForMobile" parent="accountHelper"
         p:notificationService="email"/>

<bean id="accountHelperForCron" parent="accountHelper"
         p:notificationService="jabber"/>


Смотри, account helper скорее всего нужен как часть какого нибудь TransactionHelper. TransactionHelper тоже будет существовать в трех ипостасях: transactionHelperForWeb, transactionHelperForCron, accountHelperForMobile?
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186794
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪТаким образом проведен рефакторинг
и мы написали свой google guice, с чем всех и поздравляю (правда куча вопросов осталась за бортом, например scope создаваемых объектов, и как эту конфигурацию частично переиспользовать в тестах, заменив во всех созданных дао один коннект другим. но в конце концов пофиг - первый блин комом).

пора определиться, либо мы в принципе против ioc, либо нам конкретно спринг не нравится. Вот Петру например конкретно спринг не нравится, он на него как красная тряпка действует, даже сильней чем hibernate. в остальном это чисто дело вкуса - вот я когда-то с леонидом спорил, ему описание интерфейса в ява коде нравится, а я предпочитаю xml/html
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38186796
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В больших проектах спринг-конфигурация ещё позволяет создать отдельный тип должности и область ответственности, кстати.
...
Рейтинг: 0 / 0
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
Spring. Начало. Наверно будет холивар...
    #38187608
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, Ищущий Знания!

> ну будет вместо
> MyClass mc = new MyClass();
> вот так
> @autowire
> MyClass mc;
> Что изменится-то? или зависимость от MyClass куда-то мифическим образом
> денется?

1. Инъектируется не класс, а интерфейс. А тот, кто делает инъекцию- даже
не в курсе, кто реализует этот интерфейм.

2. Если у нас всё стейтлесс, то будет не new MyClass(), а
MyClass.getInstance() т.к. в spring'е по обному объекту вроде как
создаётся. В JavaEE будет получение объекта из пула.

3. Если у нас всё сложнее, и есть смешение классов разных типов
(staless, stafull) то тут ещё сложнее сделать всё самому.

> Все говорят о модульности спринг приложений...
> Если у меня приложение модульное, разбито на отдельные классы и т.д., то
> спринг сделает его еще модульнее?

Да. Т.к. зависящий не знает класса, реализующего интерфейс.

> В общем люди добрые, приведите пожалуйста реальный пример из жизни, где
> использование спринга действительно дает какие-то бенефиты.

Вопрос масштаба. Но 10 бинах не заметишь.

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187609
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkyNIN,
Я утрирую, и преувеличиваю, но суть в том:
- программист осознанно не любит использовать фреймворки в пику библиотек. И это есть правильно. Т.к. фреймворки это продукт программиста на выходе.
- если использовать фреймворк на 100 процентов. то мы получаем 1С. А вы в курсе как их зовут - конфигураторы.
- повальное увлечение XML скоро пройдёт. Скоро - в кавычках. Но я, лично, аннотации в коде люблю больше . Эо не ГУИ-разметка чтобы выносить лайоуты и цвета в отдельные файлы.
- СПРИНГ - один Бог. И это плохо. Отрадно, что тут упоминали про ДРУГИЕ реализации инжекции-декларативно или метапрограммирование\конфигурирование.
- уровень сложности кода на Java возрастает. Именно поэтому такое большое значение придаётся тестированию (основной довод за спринг).
Т.е. причина в сложности кода, который спринг помогает тестить (каламбур).
______________________________________________
"Сложнее всего в мире достигнуть простоты — это крайняя граница опыта и последнее усилие гения". © George Sand.
AutoPOI.ru — ГИС-технологии для Oracle
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187613
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GKS_SamaraВопрос масштаба. Но 10 бинах не заметишь.
+1
Вот! Именно это очень интересный вопрос. Т.к. уловить ту грань, где спринг-подход нужен, очень сложно.
Т.е. имхо надо писать и с ним, и без него.
А весь интернет завален примерами ни к селу ни к городу).
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187646
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123А весь интернет завален примерами ни к селу ни к городу).
Spring Framework, помимо DI, дает еще много чего полезного и интересного (управление транзакциями, например). А переплата за его использованием (другими словами - сложность), минимальна. Поэтому часто бывает удобно подключить его и к маленьким проектам.

Плюс, не забываем, что примеры показывают один аспект использования библиотеки, поэтому часто части сами по себе примеры не показывают КОГДА использовать Spring, а КАК его использовать.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187670
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonidvа КАК его использовать.
конечно, т.к. "Дозу" проще распространять примерами Как её приготовить. А потом уже и вопросов Зачем - не появится)))
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187692
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таки это холивар против реализации IoC в спринге или в целом против IoC`а?:)
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187705
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинТаки это холивар против реализации IoC в спринге или в целом против IoC`а?:)
А если бы был разговор про MVC, то SpringMVC бы задели? )))))
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187706
SkyNINНо если вы хотите понять почему другие используют, то засуньте вначале свое мнение туда где вы его взяли. И потрудитесь "молча" понять что вам рассказывают. Уже потому что ваше мнение - на* никому не нужно, бестолково как мнение того прогремевшего на весь рунет автора антивируса "Иммунитет".

Удачи.

Дятел, потрудись зазусунуть себе свое собственное мнение... ну ты сам знаешь куда.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187709
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ОзверинТаки это холивар против реализации IoC в спринге или в целом против IoC`а?:)
А если бы был разговор про MVC, то SpringMVC бы задели? )))))

Нет..а надо бы?О_О
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187712
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
угу. Его пора в Commons библиотеку. Или им давно пора сделать своё IDE-платформу).
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187735
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищущий Знания,

аспекта 2, как для меня:
1) Снижение связности, что
а) позволяет проще тестировать
б) использовать разные реализации одного интерфеса(даже, неизвестные вам реализации, допустим - плагины так проще писать)
2) Управление бинами как "перечнем" классов, т.е. отрефакторили вы несколько классов, сделали их stateless и вам вместо
new MyClass() везде теперь надо писать MyClass.getInstance();. В случае со спрингом вы в одном xml пропишите это действие.
Таких фишек именно в управлении конфигурацией(для того и сделано) достаточно



Да и не спрингом единым с его DI ..можно же и guice использовать. А можно и другую реализацию IoC`а - ServiceLocator.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187736
ОзверинТаки это холивар против реализации IoC в спринге или в целом против IoC`а?:)

Не, не против IoC, просто зацепился за него на примере спринга.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187744
Озверинт.е. отрефакторили вы несколько классов, сделали их stateless и вам вместо
new MyClass() везде теперь надо писать MyClass.getInstance()

А можно чуть подробнее про этот момент? Почему при stateless так изменится код?
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187754
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищущий ЗнанияОзверинт.е. отрефакторили вы несколько классов, сделали их stateless и вам вместо
new MyClass() везде теперь надо писать MyClass.getInstance()

А можно чуть подробнее про этот момент? Почему при stateless так изменится код?

Я не раскрыл, для чего stateless - чтобы в многопоточной среде использовать..
И из этого уже вытекает, что создать надо 1 раз(а для чего еще делалось?)
А в многопоточной среде безопасное создание - вообще довольно муторная вещь
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187788
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверинчтобы в многопоточной среде использовать
в общем среднем по госпиталю,
- в десктоп клиентах принято - 1 поток на всё приложение и классы со сложным созданием и с сосотоянием
- в вебе всё разбито на осколки без состояния. Процедуры БЛ-сервисы и пул этих бинов без состояний.
На Java чистых десктопов всё меньше
imho
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187799
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, Озверин!

> аспекта 2, как для меня:
> 1) Снижение связности, что
> а) позволяет проще тестировать
> б) использовать разные реализации одного интерфеса(даже, неизвестные вам
> реализации, допустим - плагины так проще писать)
> 2) Управление бинами как "перечнем" классов, т.е. отрефакторили вы
> несколько классов, сделали их stateless и вам вместо
> new MyClass() везде теперь надо писать MyClass.getInstance();. В случае
> со спрингом вы в одном xml пропишите это действие.

А вот, кстати.
Можно без спринга:

1. Писать в каждом классе метод
getInstance который в stateless будет возвращать статическую переменную,
а в statefull - new MyClass().

2. Написать фабрику, закинуть её в статичную переменную приложения и
дёргать оттуда реализацию. Заменил фабрику в одном месте (при
инициализации приложения) - и готово.

Далее допилить удобство и получить, по сути, тот же Spring :)
Поэтому когда он становится хорошо знакомым, то многим проще всегда
использовать его, т.к. костылики хоть и работают, по сути, так же, но их
ещё писать надо, а знакомый spring - вот он.

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187801
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, Petro123!

> в общем среднем по госпиталю,
> - в десктоп клиентах принято - 1 поток на всё приложение и классы со
> сложным созданием и с сосотоянием

В яве? Очень плохое допущение. Боком выйдет.

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187842
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GKS_Samara,
потоки - "вообще довольно муторная вещь " (Озверин)
))
в десктопе (2 звена) они не нужны.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187845
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дополню..так в Java понятнее - в Толстом клиенте они не нужны.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187854
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123дополню..так в Java понятнее - в Толстом клиенте они не нужны.
Как раз в толстом клиенте без SwingWorker-а никуда. Если standalone, без особого IO, то ещё можно обойтись.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187861
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczPetro123дополню..так в Java понятнее - в Толстом клиенте они не нужны.
Как раз в толстом клиенте без SwingWorker-а никуда. Если standalone, без особого IO, то ещё можно обойтись.
я не знаю что это такое). Но я хорошо знаю, что к примеру, поток реализующий модальное окно - совсем не к месту в прикладном программировании.
А больше там потоки некуда засунуть.
Стек процедур от ButtonClick до КнопкаСделалаСвоюРаботуИ_отжалась - конечен. И в потоках не нуждается.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187866
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, Petro123!

> Стек процедур от ButtonClick до КнопкаСделалаСвоюРаботуИ_отжалась -
> конечен. И в потоках не нуждается.

Т.е. о фоновой работе приложения ты не слышал?
Вот иногда хочется авторам pl/sql-developer'а за такой подход гвоздь в
голову забить. Начал операцию потормознее- и всё, можно о работе в нём и
не помышлять. Особенно бесит после eclipse.

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187869
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GKS_Samara,
OFF
слышал. И хорошо знаю, что бесит в Eclipse от асинхронности. И что бесит в Developer от синхронности)).
Фоновая работа - очень специфическая вещь.
И так же как Спринг \ IoC не всем нужна. А некоторым - вредна.
Есть Excell в нём можно писать текст. А есть Word в нём можно писать таблички.
А вод - ВордоExcell - это Г.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187881
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
берём условный пример UML связей классов в условном проекте.
Давайте Засунем сюда асинхронность перевода счетов и отсутствие состояния в классах.
..
Я не думаю, что эта диаграмма менее понятная чем простынь связей в XML спринга
IMHO
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187885
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123SkyNIN,
- программист осознанно не любит использовать фреймворки в пику библиотек.
потому что ему лениво учить что-то новое

Petro123 И это есть правильно
что может быть правильного в стремлении наступить на все грабли лично? большинство фреймворков написано людьми, превосходящими подавляющую массу программистов и по опыту и по знаниям. это все равно как игнорировать военный устав, который, как известно, написан кровью. если фреймворк 100% отвечает целям, нужно использовать его, а не городить велосипеды.

Petro123- если использовать фреймворк на 100 процентов. то мы получаем 1С. А вы в курсе как их зовут - конфигураторы.
благодаря тебе, мы читаем про конфигурастов в каждом втором твоем посте. это бред собачий. Петро, это БРЕД. это все равно как сказать, что повар, готовящий на электроплите вместо костра - не повар.

Petro123Но я, лично, аннотации в коде люблю больше . Эо не ГУИ-разметка чтобы выносить лайоуты и цвета в отдельные файлы.
это тоже весьма спорное утверждение. Если у меня есть POJO класс, который мне надо сохранить в базу, а еще уметь сериализовать в xml, то я его должен обвешать аннотациями, как новогоднюю елку. а потом, в один прекрасный день, мне этот объект понадобится в андроиде, и нахрена мне все эти зависимости?

Petro123- СПРИНГ - один Бог. И это плохо.
опять чепуха. спринг - это сборник библиотек и технологий. практически у каждой из них есть аналоги, у многих не один.

Petro123- уровень сложности кода на Java возрастает
не уровень сложности кода на Java, а уровень сложности приложений. чувствуешь разницу? даже среднестатистическая лабораторка достаточно сложна для того, чтобы легче было написать тесты, а не вводить ручками различные варианты данных и сверять результат. Жаль мне об этом в универе никто не потрудился рассказать.

Petro123Именно поэтому такое большое значение придаётся тестированию
большое значение придаётся тестированию, потому что оно имеет большое значение. понимаю, это сложно понять рeбятам всю жизнь писавшим код в пределах OnButton1Click

Petro123(основной довод за спринг).
ты опять ничего не понял. для облегчения тестирования нужна слабая связность тестируемых компонент. спринг тут совершенно сбоку.

Petro123Т.е. причина в сложности кода, который спринг помогает тестить (каламбур).
тут каламбуром и не пахнет. телом - бел, калом - бур. Вот это был бы каламбур
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187895
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczPetro123дополню..так в Java понятнее - в Толстом клиенте они не нужны.
Как раз в толстом клиенте без SwingWorker-а никуда.
да он пришел из тех мест, где 99% контингента вставляют Application.ProcessMessages в цикл, чтоб окно не замерзало.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187920
sanyock2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Есть Excell в нём можно писать текст. А есть Word в нём можно писать таблички.
А вод - ВордоExcell - это Г.

а в одно можно вставить другое, если правильна
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187941
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaда он пришел из тех мест, где 99% контингента вставляют Application.ProcessMessages в цикл, чтоб окно не замерзало.
детский сад)).
У вас проблемы с замерзанием? С циклами? )) Тогда мы идём к вам.
А ещё, там медведи по улицам ходят. И люди детей едят.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187948
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanyock2,
можно. Главное, когда понядобятся формулы - не вставлять OLE Excell в ячейки Ворд.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187960
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,
я в курсе, что слабую связность легче тестировать.
Приведи пример своего XML конфига связности. Аналогично рисунку вверху.
И не пиши столько много эмоций)) Это не ПТ.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187961
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123У вас проблемы с замерзанием? С циклами? )) Тогда мы идём к вам.
Petro, избавь меня от рекламных слоганов.

Petro123А ещё, там медведи по улицам ходят. И люди детей едят.
я "там" был, медведей видел сам. так что не надо. к тому же мы регулярно лицезреем поток твоего сознания, так что уж мнение как-нибудь сложить можно.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187970
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Приведи пример своего XML конфига связности.
петро, что такое "xml конфиг связности"?
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38187977
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaPetro, избавь меня от рекламных слоганов.
ну, у тебя "окно замрезает" - приведи пример твоих циклов в твоей программе.
- пример, спринг IoC для UML выше по ТЗ.
Просто аналог по сложности.
(больше 10 бинов)))
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38188087
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ну, у тебя "окно замрезает"
где я сказал, что у меня окно замерзает?

Petro123 - приведи пример твоих циклов в твоей программе.
у меня их нету

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
public class BesichtigungsOrteListFragment extends RoboListFragment implements LoaderManager.LoaderCallbacks<List<BesichtigungsOrt>>
{

    private static final int LIST_LOADER_ID = 1;

    private static class BesichtigungsOrtLoader extends ListLoader<BesichtigungsOrt>
    {

        private final BesichtigungsOrteDao dao;
        private final BewertungHolder bh;

        @Inject
        public BesichtigungsOrtLoader(Context context,
                                      BesichtigungsOrteDao besichtigungsOrteDao,
                                      BewertungHolder bh)
        {
            super(context);
            this.dao = besichtigungsOrteDao;
            this.bh = bh;
        }

        @Override
        public List<BesichtigungsOrt> loadInBackground()
        {
            return bh.getBewertung().getStandortId() == null
                    ? Collections.<BesichtigungsOrt>emptyList()
                    : dao.getByStandort(bh.getBewertung().getStandortId());
        }
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState)
    {
        super.onViewCreated(view, savedInstanceState);
        loadBesichtigungsOrte();
    }

    private void loadBesichtigungsOrte()
    {
        setListShown(false);
        Loader<Object> loader = getLoaderManager().getLoader(LIST_LOADER_ID);
        if (loader == null)
        {
            getLoaderManager().initLoader(LIST_LOADER_ID, null, this);
        }
        else
        {
            getLoaderManager().restartLoader(LIST_LOADER_ID, null, this);
        }
    }


    @Override
    public Loader<List<BesichtigungsOrt>> onCreateLoader(int i, Bundle bundle)
    {
        return RoboGuice.getInjector(getActivity()).getInstance(BesichtigungsOrtLoader.class);
    }

    @Override
    public void onLoadFinished(Loader<List<BesichtigungsOrt>> listLoader, List<BesichtigungsOrt> besichtigungsOrte)
    {
        setListAdapter(new BesichtigungsOrteAdapter(getActivity(), besichtigungsOrte));
    }

    @Override
    public void onLoaderReset(Loader<List<BesichtigungsOrt>> listLoader)
    {
    }
}



Petro123- пример, спринг IoC для UML выше по ТЗ.
с целью чего я должен здесь запостить три экранных листа xml в ответ на твою картинку? ты уже запостил код для UML выше по ТЗ?

Напрягись, попытайся собрать мысли в кулак и направить их в конструктивное русло
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38188198
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,
ты не оффтопь. Для это - ПТ есть.
- я спросил что у тебя в циклах, что окно замерзает?
Чтобы я знал, зачем с этим бороться.
Может там: "Форматирую C: - ничего не делайте - подождите" Или "Перевожу деньги - ждите...."

А ты сразу код вывалил)).
"Иди мальчик - программируй. Раз на земле работаешь"

- про где, обозначать связи и инжекцию - в XML или аннотациях. Ты же сам и говорил - на любителя.
)).
Эмоциональный ты наш)).
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38188250
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123chpasha,
ты не оффтопь. Для это - ПТ есть.
Это не твоя прерогатива, решать что оффтоп, а что нет.

Petro123- я спросил что у тебя в циклах, что окно замерзает?
у меня ничего

Petro123Чтобы я знал, зачем с этим бороться.
не парься, у тебя все идеально.

Petro123Может там: "Форматирую C: - ничего не делайте - подождите" Или "Перевожу деньги - ждите...."
какая разница? что бы там ни делалось, gui не должен умирать

Petro123А ты сразу код вывалил)).
ну ты же у нас любитель кода, и вчено требуешь примеров. заказывали? получите и распишитесь


Petro123- про где, обозначать связи и инжекцию - в XML или аннотациях. Ты же сам и говорил - на любителя.
я и не отказываюсь. но я также говорил о том, что аннотациями нужно пользоваться аккуратно. они удобны, но жестко привязывают к коду конкретную реализацию и навязывают определенные зависимости. и если например в веб-приложении пару лишних "мертвых" либ возможо не проблема, то например в том же андроиде это добро уже не уместно, а часто даже не скомпилируется.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38188294
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaну ты же у нас любитель кода, и вчено требуешь примеров. заказывали? получите и распишитесь
если ты не понял, то я не люблю бессмыслненный код от кодировщика.
Додумывать за тебя с чем ты там бесконечно борешься - уволь.
Наверно, не знаешь фреймворк по ГУИ...где окна мерзнут. ((с) - ты)
авторя и не отказываюсь. но я также говорил о том,
вот и замечательно. Не будь Дон Кихотом.
Говори про свой XML. Я я про свои аннотации. Мне обозревать код легче чем твои XML.
Об этом ещё толковый VoDa говорил.))...про простыни XML...
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38188320
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Додумывать за тебя с чем ты там бесконечно борешься - уволь.
можно цитату на то место, где я с чем-то борюсь?

Petro123Наверно, не знаешь фреймворк по ГУИ...где окна мерзнут. ((с) - ты)
не смог понять смысла предложения

Petro123Не будь Дон Кихотом.
не надо мне указывать

Petro123Говори про свой XML. Я я про свои аннотации. Мне обозревать код легче чем твои XML.
Об этом ещё толковый VoDa говорил.))...про простыни XML...
слышал пословицу про метание бисера перед свиньями?
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38188335
eny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
eny
Гость
Ищущий Знания,

Вспомним азы, дуальность процесса программирования (классика):
Код: pascal
1.
программирование := данные+алгоритмы.


Переформулируем в нашу систему координат:
Код: pascal
1.
2.
3.
4.
НашаСуперПуперОфигенскаяПрогра := //проект - за нее нам платит заказчик
      ДурацкиеНафигНеНужныеНепонятныеДанные + //какой му... это все придумал
          ФигПоймешКакиеГовноАлгоритмы; /*то что это придумал му... уже написано раньше
                                                             но кто еще и этот говнонокод написал!*/



Итак, если уж писать сложный, кривой и непонятный говнокод, то сделать это один раз и максимально универсально!
А что самое универсальное в нашем мире? Правильно! Интерпретатор собственного проблемно-ориентированного языка!
... так появилась 1С. Поскольку алгоритмы 1С ну очень "проблемно-ориентированы" и где-то странны и туповаты, то и данные должны быть не простые, а тоже проблемно-ориентированные немного тупые и странные. Это крайняя точка в нашей стсеме координат

Ну а те программисты, кто-не хотел совсем заумных алгоритмов и данных остановились на спринге, так чтобы данные были максимально свободны от предположений, а алгоритмы максимально прозрачны - это где-то посередине положительной четверти плоскости.

Наконец, каждый желающий может сваять свой фреймворк с соответствующим балансом сочетания данных и алгоритмов. Что я кстати и сделал - ни разу не пожалел, получил легко конфигурируемую прогу и настройку ее поведения из xml.

По своему опыту могу сказать, что это реально круто, и ускоряет/повышает производительность/упрощает реализацию/.../.../... в разы.
Например, все мы прекрасно знаем,что такое грид с данными. Грид надо сортировать, фильтровать, группировать, настраивать размер и положение колонок, удалять, вставлять и редактировать записи, еще печатать и экспортировать.
Теперь пишем мега-форму которая это все умеет, на вход ей подаем текст запроса к БД, список колонок, настройки внешнего вида (все эа информация хранится в xml) - результат: форма в 200-300 колонок с 10-ю таблицами становится функциональной за час.

Вобщем xml-шаблонизация и стандартизация алгоритмов инициализации - это наше все, тот кто это не не использует обречен писать унылый говнокод до скончания веков. Собственно, в delphi замечательно используют эту идею разделяя код на dfm и pas, выстраивая vcl на этой платформе.

Сравните с той же Java Swing там все ручками надо писать:
- пусть окно будет размером x на y;
- создать окно;
- пусть компонент будет размером a на bи текстом helloWord;
- создать компонент для текстового ввода;
- поместить компонент на форму и т.д.
Потому и изобрели свой аналог разделения данных визуализации и инстанцирования форм то есть спринг.

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

Для справки, в Andoid SDK не существует вообще понятия инстанцирования(создания) визуальных компонентов из Java кода. Вместо этого используется main.xml в котором на языке разметки прописывается весь пользовательский интерфейс и его поведение и свойства. А код пишем в предположении что все компоненты main.xml успешно созданы и инициализированы.

Так что мир катится к окончательному разделению данных и алгоритмов их обработки. Чего и Вам желаю осознать и применить на практике как можно раньше.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38188369
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eny,
ты немного приплёл VIEW и ГУИ (грид) к теме.
Тут говорят об связях в классах. Т.е. отделения связей в классах (IoC) от самой БЛ (кода использования).
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38188370
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enyДля справки, в Andoid SDK не существует вообще понятия инстанцирования(создания) визуальных компонентов из Java кода
как это? . достаточно например посмотреть на реализацию ListFragment из support library

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        final Context context = getActivity();

        FrameLayout root = new FrameLayout(context);

        // ------------------------------------------------------------------

        LinearLayout pframe = new LinearLayout(context);
        pframe.setId(INTERNAL_PROGRESS_CONTAINER_ID);
        pframe.setOrientation(LinearLayout.VERTICAL);
        pframe.setVisibility(View.GONE);
        pframe.setGravity(Gravity.CENTER);

        ProgressBar progress = new ProgressBar(context, null,
                android.R.attr.progressBarStyleLarge);
        pframe.addView(progress, new FrameLayout.LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));

        root.addView(pframe, new FrameLayout.LayoutParams(
                ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));

        // ------------------------------------------------------------------

        FrameLayout lframe = new FrameLayout(context);
        lframe.setId(INTERNAL_LIST_CONTAINER_ID);
        
        TextView tv = new TextView(getActivity());
        tv.setId(INTERNAL_EMPTY_ID);
        tv.setGravity(Gravity.CENTER);
        lframe.addView(tv, new FrameLayout.LayoutParams(
                ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
        
        ListView lv = new ListView(getActivity());
        lv.setId(android.R.id.list);
        lv.setDrawSelectorOnTop(false);
        lframe.addView(lv, new FrameLayout.LayoutParams(
                ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));

        root.addView(lframe, new FrameLayout.LayoutParams(
                ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
        
        // ------------------------------------------------------------------

        root.setLayoutParams(new FrameLayout.LayoutParams(
                ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
        
        return root;
    }



но в целом я с тобой согласен, лично мне (лично мне) гораздо удобней описывать интерфейс декларативно. тот же ListFragment в android-core реализован разметкой. для тех, кто не в теме, оба кода реализуют одно и то же 1:1. судите сами, что удобней

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
    <LinearLayout android:id="@+id/progressContainer"
            android:orientation="vertical"
            android:layout_width="match_parent" 
            android:layout_height="match_parent"
            android:visibility="gone"
            android:gravity="center">
        
        <ProgressBar style="?android:attr/progressBarStyleLarge"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        <TextView android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceSmall"
                android:text="@string/loading"
                android:paddingTop="4dip"
                android:singleLine="true" />
            
    </LinearLayout>
        
    <FrameLayout android:id="@+id/listContainer"
            android:layout_width="match_parent" 
            android:layout_height="match_parent">
            
        <ListView android:id="@android:id/list"
                android:layout_width="match_parent" 
                android:layout_height="match_parent"
                android:drawSelectorOnTop="false" />
        <TextView android:id="@+android:id/internalEmpty"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center"
                android:textAppearance="?android:attr/textAppearanceLarge" />
    </FrameLayout>
        
</FrameLayout>
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38188421
eny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
eny
Гость
Petro123,

я приплел формулу данные+алгоритмы;

Не принимая этой парадигмы, мешая все в кашу разумеется никакой разницы между спрингом и кодированием всего и сразу нет. Каша так каша, здесь классы создаем, тут все вызываем, а тут все обрабатываем, потом опять создаем, а фигли так не писать!?
Зато:
- отвечаем за каждую мелочь;
- точно знаем где замутим утечку памяти, где пару багов (а если еще не знаем то найдем!);
- потом все это героически правим, рефакторим, добиваемся максимальной производительности;
и
- каждый день уходим в десять вечера с работы с радостным осознанием, что зае... по самые гланды и завтра этим же займемся...

экстрим вопщем ;)
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38188479
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eny,
я не против разделения на слои даже в коде.
Ты привёл Delphi. Там никто в dfm\xml не смотрит.
С какого фига я должен смотреть в XML от спринга?
Пусть сделают СпрингИде а-ля Дельфи. Я буду прямо мышкой связи устанавливать)).
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38188525
eny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
eny
Гость
Petro123eny,
я не против разделения на слои даже в коде.
Ты привёл Delphi. Там никто в dfm\xml не смотрит.
С какого фига я должен смотреть в XML от спринга?
Пусть сделают СпрингИде а-ля Дельфи. Я буду прямо мышкой связи устанавливать)).

Да какая разница, идея одна и та же...

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

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

И никто не задумывается о БАЗОВЫХ ПОНЯТИЯХ программирования как целенаправленной деятельности, в итоге рано или поздно возникает когнитивный диссонанс и холивары.

Когда-то я холиварил за Delphi против C ;) потом за JAva, потом плотно подсел на C++, затем был C#, потом PHP, потом окунулся в C потом опять в Delphi. Куча платформ, операционок, сфер применения и реализаций вывод - везде свои плюсы и минусы.

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

Если не знал с самого начала, что и как писать, то в середине разработки поток сознания уже не остановить и становиться все хуже без надежд на улучшение. Вот как-то так побрюзжал
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38188548
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enyДа какая разница, идея одна и та же...
угу))). Коммунизм - идея прекрасная, только реализация подкачала)).
Кстати, если ты на шарпе ваял, то там вроде XML (от MS) представления всего и вся поболее Java'ы будет?
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38188558
eny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
eny
Гость
Petro123enyДа какая разница, идея одна и та же...
угу))). Коммунизм - идея прекрасная, только реализация подкачала)).
Кстати, если ты на шарпе ваял, то там вроде XML (от MS) представления всего и вся поболее Java'ы будет?

Фик там! VS все мягко и не навязчиво в код сгребает и закрывает под плюсиком с соответствующим комментарием типа: "Данный код сгенерирован системой автоматически. Не править ибо бесполезно!"

В xmle буквально пара параметров генерится, ну или если сам захочешь - можно нагенерить своих, из кода инициализации еснно... вобщем по здравомыслию с delphi ничто не сравнится, разве что Android...
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38188594
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enyНе править ибо бесполезно!
)) LOL
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38188683
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GKS_Samara> Стек процедур от ButtonClick до КнопкаСделалаСвоюРаботуИ_отжалась -
> конечен. И в потоках не нуждается.

Т.е. о фоновой работе приложения ты не слышал?
Вот иногда хочется авторам pl/sql-developer'а за такой подход гвоздь в
голову забить. Начал операцию потормознее- и всё, можно о работе в нём и
не помышлять. Особенно бесит после eclipse.
лучше бы тебя бесило когда спокойно делается то, что зависит от результата того, что закинуто в фон. Фоновая работа очень специфична.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38188689
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123"Перевожу деньги - ждите...."
нет же... зачем ждать пока выполнится один платеж со счета. Фоновый процесс - вот что нужно. Пока выполняется готовишь следующий, даже если по результатам первого он будет не нужен. Но зато в фоне. Про фон слышал? :)
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38188993
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, iscrafm!

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

Не встречал. Эклипс хорошо это разруливает.

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38189016
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

если вас так не устраивает xml, поставье ioc от guice - кодируйте, пишите простыни кода в коде, извиняюсь за каламбурс...только с агрессией своей к xml надо уже что-то делать же ;)
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38189109
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GKS_SamaraНе встречал. Эклипс хорошо это разруливает.
а что он разруливает?
Там элементарные задачи линейного парсера-компилятора. Бизнес-логика бывает сложнее.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38189123
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
ты ждёшь от топика восхваления вашего \ твоего Бога Спринг?
Выложи 2 простыни - в аннотациях и в XML. Можно будет говорить. А так, что обсуждать?
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38189134
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Озверин,
ты ждёшь от топика восхваления вашего \ твоего Бога Спринг?
Выложи 2 простыни - в аннотациях и в XML. Можно будет говорить. А так, что обсуждать?

Почему вы решили, что я жду чьего-то восхваления? Я сказал, что каждый использует тот инструмент, который ему удобен.
А вам персонально посоветовал инструмент, в котором все бинды для бинов прописывать можете непосредственно в коде, без xml конфигураций.

p.s. Представляю, в какой эпилепсии вы находитесь при создании нового отчета под jasper report.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38189150
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
я говорил ровно то же самое. Тут 5 процентов программистов используют не только спринг, а и другие средства (guice ). И это замечательно.
Озверинp.s. Представляю, в какой эпилепсии вы находитесь при создании нового отчета под jasper report.
))) о да. Мне нравится технология отчётов у Access которую ты тоже знаешь))
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38192056
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Озверин,
я говорил ровно то же самое. Тут 5 процентов программистов используют не только спринг, а и другие средства (guice ). И это замечательно.
Наверное, не спроста 95% программистов используют Spring.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38192069
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonidv,
Когда используют такие доводы, это и есть религия). Ещё со времён "горячё поддерживаем и коллективно 100 проц. одобрям))".
Зачем тему поднял?
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38195069
2dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитал тут все. А с каких пор Spring стал частью JEE ?
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38195074
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2devПочитал тут все. А с каких пор Spring стал частью JEE ?
Spring идеологически альтернатива JEE технологиям. Поэтому его "образоно" причисляют к JEE программированию. Фактически, он, конечно же, не является реализацией JEE спецификаций.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38195100
2dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz2devПочитал тут все. А с каких пор Spring стал частью JEE ?
Spring идеологически альтернатива JEE технологиям. Поэтому его "образоно" причисляют к JEE программированию. Фактически, он, конечно же, не является реализацией JEE спецификаций.

Хорошая статья на тему http://www.infoworld.com/d/application-development/can-tomee-save-java-ee-214901
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38195619
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Leonidv,
Когда используют такие доводы, это и есть религия).
Это не довод. Это способ задуматься. Довод - "Ты должен использовать Spring, потому что его используют 95% всех программистов!"
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38195925
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonidvЭто не довод. Это способ задуматься
для некоторых это принципиальный контраргумент, предлагаю дать этому явлению название синдром анти-лемминга
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38195934
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
балаболы. Хорош флеймить.
У аффтара был вопрос
Ищущий ЗнанияСмотрю кучу примеров в инете, походу у большинства "спринг головного мозга".
Есть конкретика в виде ссылки, по сабжу - вперед.
....
А то ведь и те конкретные примеры с кодом - замусорите болтовнёй.
ПТ
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38195944
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123У аффтара был вопрос
Ищущий ЗнанияСмотрю кучу примеров в инете, походу у большинства "спринг головного мозга".
Есть конкретика в виде ссылки, по сабжу - вперед.
включи свой мозг уже, какая может быть ссылка по вопросу "не понял в чем цимес, но они точно все дураки".

Petro123А то ведь и те конкретные примеры с кодом
ты затрахал уже со своими "примеры с кодом". тебе напомнить про

Petro123если ты не понял, то я не люблю бессмыслненный код от кодировщика.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38195947
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,
кодировщиком работаешь?
Аффтар сказал, что в инете нет ссылок на толковую статью.
Дошло?
Ты зачем тему поднял? У Лёни авитоминоз и весенне обострение. А у тебя?
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38195957
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123chpasha,
кодировщиком работаешь?
да. кодирую от запоя, супружеской неверности и общего слабоумия.

Petro123Аффтар сказал, что в инете нет ссылок на толковую статью.

действительно, ни одного упоминания

Petro123Ты зачем тему поднял? У Лёни авитоминоз и весенне обострение. А у тебя?
у меня аллергия на оленей
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38195963
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,
Вот молодец).
Работай дальше).
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38196088
chpashaPetro123Аффтар сказал, что в инете нет ссылок на толковую статью.

действительно, ни одного упоминания


Ну что это за ссылки? Толку от них ноль, во первых английский для меня не родной и пространные объяснения читаются с трудом...
Во вторых во всех статьях рассматриваются лажовые прмеры, оторванные от реальности в которых видно КАК применять спринг, но непонятно ЗАЧЕМ.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38196195
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищущий ЗнанияВо вторых во всех статьях рассматриваются лажовые прмеры, оторванные от реальности в которых видно КАК применять спринг, но непонятно ЗАЧЕМ.
Я уже вам писал. Для того, чтобы понять ЗАЧЕМ, вам нужны книги не по Spring, а по ОО-Архитектуре, ОО-Дизайну и т.п.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38196196
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищущий ЗнанияНу что это за ссылки? Толку от них ноль, во первых английский для меня не родной и пространные объяснения читаются с трудом...
ну извините

Ищущий ЗнанияВо вторых во всех статьях рассматриваются лажовые прмеры, оторванные от реальности
как-то так принято рассматривать вещи на простых примерах. предлагаешь объяснять ioc на примере движка бд?

Ищущий Знания в которых видно КАК применять спринг, но непонятно ЗАЧЕМ.
предполагается, что человек в курсе, что такое di. тогда для него не стоит вопрос, зачем di framework, для него стоит вопрос - какой брать.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38196264
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
предлагаешь объяснять ioc на примере движка бд?
Я бы с удовольствием послушал такое объяснение. Но, к сожалению, ioc не применяется в движках субд. Наверное, причина в том что программисты движков субд - серые невежественные люди, и им следует еще многому научиться у программистов сайтов на яве.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38196318
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪ,

Вы поймите: IoC - подход который позволяет снизить связанность компонентов ИС, что в свою очередь ведёт к более простому тестированию компонентов и легкому переиспользованию. Если вы не пишите тесты, если у вас нет разделение на test/dev/prod enviroment, мало самих компонентов ИС, вам не понятно зачем нужен шаблон Factory. То тогда и не стоит пытаться понять зачем нужен IoC и его реализации в виде Spring, EJB, Guice, picocontainer. Не нужно это вам всё, не парьтесь, живите спокойно :)
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38196460
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪЯ бы с удовольствием послушал такое объяснение.
а я нет. мне petclinic как-то ближе.

Йуный джавистЪ Но, к сожалению, ioc не применяется в движках субд.
да как жаль-то.

Йуный джавистЪ Наверное, причина в том что
наверное причина в том, что движок бд - это не магазин кошачьей еды, а магазин кошачьей еды - это не драйвер вэб-камеры.

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

хорош писать херню, коллега.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38196464
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTk,
+1 Хороший пост.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38198058
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы поймите: IoC - подход который позволяет снизить связанность компонентов ИС
Я считаю, что всякое ООП употребленное не к месту и спринг в частности популярны потому, что дают ИЛЛЮЗИЮ архитектуры и проектирования. Авторы спринга как бы говорят: засунь половину своей программы в xml файл и она станет автоматически расширяемой сама по себе. Но волшебства не случается, программа как была нерасширяемой, так и осталась, но теперь теперь еще стала содержать xml-спагетти. Думать сложно, это отнимает массу усилий. Спринг дает иллюзию, что вы что-то обдумали и сделали полезное не затратив усилий, а просто механически напихав бинов в xml.
Человек любит структуру, иначе он был бы обезьяной. Программисты любят xml, потому что синтаксическая структура xml - суррогат настоящей структуры, которая присуща хорошей программе. Также иллюзию структуры дает разбиение программы на миллион маленьких файликов, разложенных по ветвистой стуктуре папочек. Но на самом деле все это не приближает к решению проблемы.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38198070
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪ,
вам бы с автором темы прозу писать. художественную.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38198079
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вам бы с автором темы прозу писать. художественную.

А я пишу философский роман.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38198119
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪ,

Дело как раз в том, что чуваки из spring дают вам инструмент, а как вы его примените это уже ваша обязанность. Если у вас со spring получается xml-спаггети и архитектура никак не улучшилась, может тогда в консерватории, что то подправить нужно...
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38198247
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все, кто пишут про XML-спагетти однозначно показывают, что со Spring'ом не работали и за развитием его не следят. Давно уже можно все делать на аннотациях, а в последних версиях XML можно заменить специальными классами.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38198293
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪпопулярны потому, что дают ИЛЛЮЗИЮ архитектуры
)) действительно философия).
Правы на половину.
- есть мейнстрим в появлении метапрограммирования. Т.е. программированием Над простым кодом.
Раньше было В Delphi RTTI, в Java рефлексия - не прижилось. Или скажем так, редко применяется.
Отчасти из за того что мозгов больше надо (заточенных на ветвистые классы).

А вот мета программирование, есть в Пайтоне-питоне, появилось в Delphi ...Java....
Ведь, не важно как оно технически оформлено - XML\аннотация\двоичный_файл_сбоку.

Нужно учесть, что в Java хозяин кода уже не программист, а контейнер. Тут свои законы (состояние...короткое время жизни стека...) и т.д. Это способствует конфигурированию, а не программированию классически. Вольно или невольно, но никто не будет писать десктоп и веб по разному (лень).

МетаХХХХ (Аннотации\XML) - это другой ЯП. Он пытается завоевать рынок. На шарпе ведь, тоже, по _другому_ пишут.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38198368
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Всё хотел поинтерессоватся, а на каком стеке технологии ты пишешь? :)
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38198390
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTk,
OFF
ну дак в профиле ссылка на сайт "с нуля" как чисто техническое решение без раскруток SEO и особых защит))

"Для того чтобы судить о качестве приготовленной яичницы - необязательно уметь нести яйца" (с)

Именно в Java я недавно, поэтому _понемногу_ всё что интересно, JSP, JS, Хибер-ОРМ, SmartGWT, Андроид.
IoC не заинтересовал, т.к. я знаю что это такое и какой продукт будет на вкус).
PS. По работе на хлеб - Delphi.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38198427
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Раньше было В Delphi RTTI, в Java рефлексия - не прижилось. Или скажем так, редко применяется.

Ммм, ты задумайся, как работает палитра компонент и графический дизайнер в Delphi.
По поводу рефликсии в Java - применяется в в каждом первом более или менее серьезном фреймворке. Другое дело, что ее использование вне фреймворков - часто признак плохого дизайна кода.
...
Рейтинг: 0 / 0
Spring. Начало. Наверно будет холивар...
    #38198935
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪСпринг дает иллюзию, что вы что-то обдумали и сделали полезное не затратив усилий, а просто механически напихав бинов в xml.

В том то и дело. Степень полезности определяет заказчик, затраченые усилия - исполнитель. Даже если субъективно использование спринга создает иллюзию, что усилий не затрачивается - все равно это хорошо -- не напрягаются мозги, не надо париться по этому поводу, можно заниматься другими более полезными вещами.
...
Рейтинг: 0 / 0
159 сообщений из 159, показаны все 7 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring. Начало. Наверно будет холивар...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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