Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring. Начало. Наверно будет холивар... / 25 сообщений из 159, страница 1 из 7
16.03.2013, 04:43:21
    #38186505
Spring. Начало. Наверно будет холивар...
Последние 2 недели ковыряю спринг...
В инете масса инфы о нем, что он и зачем.
И вроде технически все понятно.

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

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

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

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



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



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

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

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

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

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

Вот этими фразами, и понятно - Спринг - Бог.
...
Рейтинг: 0 / 0
16.03.2013, 08:54:32
    #38186531
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring. Начало. Наверно будет холивар...
Кстати, MS, в своё время, отказалась от технологии COM.
По причине: Увеличивает связность проектов программистами, т.к. их стало слишком легко делать. Весь проект испещрён вызовами интерфесов туда-сюда. Надо и не надо.
То же самое с инжекцией всего и во вся друг с другом (километровые простыни описания связей).
...
Рейтинг: 0 / 0
16.03.2013, 09:35:58
    #38186539
GregTk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring. Начало. Наверно будет холивар...
Давайте без фанатизма рассмотрим простой вариант: У нас есть сервис 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
16.03.2013, 10:17:14
    #38186544
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring. Начало. Наверно будет холивар...
GregTk,
Класс который ни с того ни с сего стал использовать 3 чужих класса требует рефакторинга. Т.е. изменения логики кода. Ссылка на требуемые при этом 3 объекта 1 процент работы.
...
Рейтинг: 0 / 0
16.03.2013, 10:20:11
    #38186545
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring. Начало. Наверно будет холивар...
Волшебная фабрика учитывающая все зависимости предметной области - иллюзия.
...
Рейтинг: 0 / 0
16.03.2013, 10:30:35
    #38186552
GregTk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring. Начало. Наверно будет холивар...
Petro123,

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

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

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

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

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

Один объект перестаёт управлять жизненым циклом другого. Эта зависимость и выносится из всех классов в отдельный контейнер. Жизненым циклом управляет сам контейнер. Вместо того чтобы управление было размазано по всем классам.
Это было ещё задолго до Spring, например в EJB, где ссылку на бин можно было получить только через JNDI. Это тоже IoC, но не через Dependency Injection, а через Service Locator.
...
Рейтинг: 0 / 0
16.03.2013, 13:28:09
    #38186617
Йуный джавистЪ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring. Начало. Наверно будет холивар...
Класс который ни с того ни с сего стал использовать 3 чужих класса требует рефакторинга. Т.е. изменения логики кода. Ссылка на требуемые при этом 3 объекта 1 процент работы.
Отличный аргумент, полностью согласен.
...
Рейтинг: 0 / 0
16.03.2013, 13:44:41
    #38186620
Йуный джавистЪ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring. Начало. Наверно будет холивар...
Я бы лучше ввел в яву такую конструкцию. Например, есть 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
16.03.2013, 13:55:01
    #38186629
schwa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring. Начало. Наверно будет холивар...
Йуный джавистЪЯ бы лучше ввел в яву такую конструкцию. Например, есть static функция
...

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

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

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

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

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

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

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

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

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

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

Собственно, почему я вообще не забил на это. И не сделал как привык.
Из инета я понял, что знание спринга востребовано рынком и есть смысл его в деле пощупать.
К тому же может это действительно та самая "серебрянная пуля", которая реально облегчит разработку и сопровождение проекта.
...
Рейтинг: 0 / 0
16.03.2013, 15:15:59
    #38186678
schwa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring. Начало. Наверно будет холивар...
Йуный джавистЪЭто очень круто, огромное спасибо за ссылку. Но как оно работает?
Манипуляции с байткодом и класслоудингом.
...
Рейтинг: 0 / 0
16.03.2013, 15:34:36
    #38186693
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring. Начало. Наверно будет холивар...
Йуный джавистЪЯ бы лучше ввел в яву такую конструкцию. Например, есть 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
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring. Начало. Наверно будет холивар... / 25 сообщений из 159, страница 1 из 7
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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