|
|
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Вроде как этот фреймворк более распространен среди Java программистов. Поэтому, хочу спросить: я почитал и честно говоря не понял в чем глубокий смысл этого фреймворка. 1) IoC - допустим мне надо создать объект. Так я не создаю его напрямую, а непременно заказываю у фабрики. Зачем ? Если только затем, чтобы не прописывать в коде явно ссылки на определенные классы и не делать такую неразборную конструкцию, то почему для этого недостаточно интерфейсов? 2) Допустим мне надо установить зависимости между объектами. Как бы я действовал: создал бы крупный класс, в котором все вспомогательные объекты создаются и используются по необходимости. А Spring что дает ? Что облегчает? От чего избавляет ? В целом понимаю что Spring делает, но не понимаю почему именно так и чем это лучше традиционного программирования ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2012, 03:28:45 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Alexsalog, автор1) IoC - допустим мне надо создать объект. Так я не создаю его напрямую, а непременно заказываю у фабрики. Зачем ? Если только затем, чтобы не прописывать в коде явно ссылки на определенные классы и не делать такую неразборную конструкцию, то почему для этого недостаточно интерфейсов? Главное что дает нам Spring это слабое связывание компонентов между собой. Также он отвечает за правильное инстанциирование компонентов(выступает контейнером). Один из плюсов это легкость Unit тестирования. Легкость проектирования. Да и впринципе удобно когда можно контролировать создание объектов, тогда можно будет легко логировать действия, выстраивать security layer. Плюсов масса. авторВ целом понимаю что Spring делает, но не понимаю почему именно так и чем это лучше традиционного программирования ? С этого момента по подробнее пожалуйста. Что вы под этим понимаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2012, 05:03:14 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
GregTkС этого момента по подробнее пожалуйста. Что вы под этим понимаете? как говорил, blazkowicz: "вот и выросло поколение, которое не знает традиционного, без инжекции". Шутка :) Было бы несправедливо, промолчать о минусах сабжа: - оверхед (на небольших проектах спринг не нужен) - слабое связывание в ООП усложняет тестирование\сопровождение\управление\отладку - в вебе очень короткий жизненный цикл объектов + многопоточность, поэтому инжекция особо не нужна. - связи между классами, это тоже БЛ, и _не все_ любят читать контекст БЛ в отдельном XML. Пример без спринга (традиционная ориентация :) ) 1. Obj = HiberUtilitu.GetSession 2. valObj = new Obj.ИменованыйКонструктор(параметры Замечательно, что у нас нет догм и можно писать традиционно и НЕтрадиционно :). Кому как нравится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2012, 09:37:33 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123, Понеслась.... :) При чём здесь инжекция? Это раз. автор- оверхед (на небольших проектах спринг не нужен) Как измерить? автор- в вебе очень короткий жизненный цикл объектов + многопоточность, поэтому инжекция особо не нужна. что для вас веб? а то у меня веб это только морда и спринга там почти нет, кроме доступа к сервисам. авторслабое связывание в ООП усложняет тестирование\сопровождение\управление\отладку "А ещё "слабое связывание" ест детей"(из той же темы) Это БРЕД! покажите пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2012, 11:24:23 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
GregTk, бери и сам показывай пример. Я показал. Я линейку принесу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2012, 11:31:13 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
GregTkи спринга там почти нет, и у меня тоже. Пусть другие спорят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2012, 11:32:34 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123, вот и разобрались )) Надо было сразу с ленейки начать ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2012, 11:34:47 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
GregTk, конечно. Тут хелло ворд от ОРМ не дождаться, не то что от преимущества спринг. Аффтар плюсы и минусы прочёл - пусть выбирает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2012, 11:39:28 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123- оверхед (на небольших проектах спринг не нужен) Spring во много облегчает жизнь на проектах любых размерах. В любом случае, сказать "небольшой" ничего не сказать. Для кого это 5kLOC, для кого-то 500kLOC Petro123- слабое связывание в ООП усложняет тестирование\сопровождение\управление\отладку Как раз этому и помогает. Прочитайте про модульное тестирование. Petro123- в вебе очень короткий жизненный цикл объектов + многопоточность, поэтому инжекция особо не нужна. Жизненный цикл сервисов - время жизни приложения. Это короткий или длинный? При чем тут многопоточность, непонятно. Petro123- связи между классами, это тоже БЛ, и _не все_ любят читать контекст БЛ в отдельном XML. Для тех, кто не любят в Spring 3.1 сделали возможности удобной конфигурации в классах. Плюс, есть очень красивый проект Spring Integration Scala DSL В целом - необоснованные заявления, которые не имеют ничего общего с действительностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2012, 12:22:43 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
опять болтовня без кода пошла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2012, 12:25:10 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Alexsalog, Зачем вообще была придумана Java 2 Enterprise Edition, все эти Application Servers, MOM и Middleware? Если коротко ответить, то разработчику дают готовую инфраструктуру, готовые сервисы (управление безопасностью, управление потоками, управление транзакциями и т.п.). Фактически в любом более менее крупном проектом встает вопрос, создавать инфраструктурный код самому или воспользоваться уже готовым решением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2012, 13:12:09 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
vas0Alexsalog, Зачем вообще была придумана Java 2 Enterprise Edition, все эти Application Servers, MOM и Middleware? Если коротко ответить, то разработчику дают готовую инфраструктуру, готовые сервисы (управление безопасностью, управление потоками, управление транзакциями и т.п.). Фактически в любом более менее крупном проектом встает вопрос, создавать инфраструктурный код самому или воспользоваться уже готовым решением. Это понятно. Особенно про готовое решение. То есть берем фреймворк или среду разработки и сознаем - эта штука сокращает наши трудозатраты потому то и потому. Я хочу осознать что облегчает разработку в случае со Spring. Вариант ответа: 1) Структуру объектов теперь можно описывать декларативно через XML и не заморачиваться с вызовом конструкторов в нужной последовательности и передачей параметров. 2) Сложные объекты не нужно создавать как единое целое - благодаря Spring по прежнему имеем нормальную удобную декомпозицию (для тестирования хорошо), а благодаря, опять же, более понятным, чем простыня кода, декларациям в XML мы эти компоненты можем объединять в некие комплексы, обладающие нужным нам поведением. Это я так понял. И ключевым тут является, что код. которым можно сделать тоже самое, заменяется XML декларациями. Я правильно понимаю ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2012, 15:18:57 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Alexsalog, да. Всё верно. Только авторопять же, более понятным, чем простыня кода, декларациям в XML это на любителя - попробуй почитать XML вместо кода. И кода, с учётом XML будет не намного меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2012, 15:27:17 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Alexsalog , Корень вашего вопроса лежит не в Спринге, а в непонимании такой вещи, как Inversion of Control . Для вкуривания рекомендую Фаулера - http://www.shmakov.ru/news/text120.html Можно еще покурить MSDN - http://msdn.microsoft.com/en-us/library/ff648478.aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2012, 15:29:02 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
svenom, где попадал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2012, 15:32:59 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Alexsalog, Spring очень гибкий, можешь использовать XML, можешь не использовать. Честно говоря непонятно в чем вопрос. Попробуй сам ответить на такой вопрос: "Посмотрел я на .net и честно говоря не понял в чем глубокий смысл этого подхода. В целом понимаю что .net делает, но не понимаю почему именно так и чем это лучше традиционного программирования ?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2012, 16:04:50 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
vas0, ну ты заменил, слово "спринг" на "net" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2012, 16:14:21 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
AlexsalogЭто я так понял. И ключевым тут является, что код. которым можно сделать тоже самое, заменяется XML декларациями. Я правильно понимаю ? Да. Плюс, поскольку почти все объекты начинают доставаться из контекста спринга, можно делать много разных вкусных вещей вроде AOP. Дополнительно в Spring уже много чего кроме DI, поэтому пользоваться им просто удобно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2012, 16:49:55 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
LeonidvAlexsalogЭто я так понял. И ключевым тут является, что код. которым можно сделать тоже самое, заменяется XML декларациями. Я правильно понимаю ? Да. Плюс, поскольку почти все объекты начинают доставаться из контекста спринга ... А как это? Можете привести пример ? Не в коде, а так "на пальцах". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 12:59:46 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Alexsalog IoC - допустим мне надо создать объект. Так я не создаю его напрямую, а непременно заказываю у фабрики. Зачем ? Затем что просто создать объект - обычно недостаточно, его еще нужно проинициализировать. И частенько, для этой инициализации еще создаются другие объекты. А для них, еще, и еще. Хотите брать эту ответственность на себя - дело хозяйское. Только при рефакторинге, или иной переделке системы придется и эту часть переделывать Во-вторых фабрика обычно возвращает интерфейсный объект. Работа же по интерфейсу - уменьшает зависимость от реализации В-третьих - какие-то объекты могут быть синглтонами, какие-то хранится в пуле. Опять же, вам все равно, что дали с тем и работаете спокойно AlexsalogДопустим мне надо установить зависимости между объектами. Как бы я действовал: создал бы крупный класс, в котором все вспомогательные объекты создаются и используются по необходимости. А Spring что дает ? Что облегчает? От чего избавляет ? Вот от этого и избавляет - "создал бы крупный класс, в котором все вспомогательные объекты создаются и используются по необходимости." Это ведь порядочная часть кода. Который требует отладки. А потом - модификации. Оно вам надо? Описание же связей между объектами в Спринге вообще выносится из языка программирования в конфиги. Все, голова не болит о связях, и правильной их инициализации. Решай задачу ту что нужно, а не пиши инфраструктуру, чтобы начать решать задачу ту что нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 14:25:14 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
SkyNIN, связи убрал, инициализацию состояния убрал - что осталось без связей и состояния? Правильно - процедурное программирование. Осталось только пример привести. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 14:39:01 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Alexsalog, скорее всего Вам сейчас Spring и не нужен, раз вы не понимаете его преимуществ(это ни в коем случае не попытка троллинга или попытка обидеть). Тотальное навязывание всяких фреймворков весьма пагубно сказывается на людях, которые только начинают осваивать j2EE. Каждому начинающему просто необходимо попробовать написать j2ee приложение на голых jsp/servletах, и именно тогда вы сможете ощутить что дают спринги и т.п. Действительно, пока количество сервисов\контроллеров не превышает 10 есть соблазн не заморачиваться, но когда вам надоест создавая каждый новый сервис, тратить значительное время на связывание объектов, управление их жизненным циклом, управлением транзакциями, сложностью unit-тестирования, рефакторингом ранее созданных классов, то вы поймете, что гораздо лучше оставить тонны инфраструктурного кода на плечи Spring, а самим заняться бизнес-логикой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 15:45:17 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
забыл ник, Хороший совет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 16:34:56 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
авторТут хелло ворд от ОРМ не дождаться, не то что от преимущества спринг. Зачем вы усиленно троллите эту тему, вы должны понимать что сабж особо то и не имеет смысла. Приведу аналогию, Допустим вы рабочий метрополитена, вам дали задание выкопать ямку 30х30 см и глубиной в 30см. У вас есть два варианта - пойти взять лопату и за полчаса выкопать или пойти к мастеру, обьяснить ему что ручной труд это плохо, попросить его вызвать экскаватор с соседнего участка, подождать его несколько часов и с упоением наблюдать как машина делает работу за вас, причем учитывая ограничения на размер ковша, выкопать ямку 30 на 30 см будет довольно затруднительно. Итак время работы - 3часа, и задача выполнена не идеально, можно сделать вывод что экскаватор говно. А теперь представим что вам дали задание выкопать траншею 30мх1м и глубиной метр, на основании вывода что экскаватор говно - вы целый день копаете лопатой и к вечеру с успехом отчитываетесь перед мастером о том что вам осталось всего 15 дней чтобы выполнить задачу. Мастер отправляет вас на больничный и звонит на соседний участок, вызывая экскаватор, который за два часа вырывает траншею, ваше мировоззрение опять меняется, и вы приходите к выводу, что каждой задаче - свой инструмент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 16:36:13 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123, При чем тут процедурное, или еще какое программирование программирование? Spring - это средство сборки приложения. Это другой уровень абстракции нежели парадигма языка программирования. Petro123Осталось только пример привести. По опыту общения с начинающими - малополезно. Будет много кода, но даже по этому коду преимуществ видно не будет, пока мышление программиста находится на уровне задач "вывод строки Hello world в консоль" Кроме того, начинающий программистам очень сложно объяснить, что когда над проектом работает более 5ти человек одновременно, то головняк это уже не только тим-лида или иного менеджера. И многие средства в программировании, например и Spring и появились для уменьшения проблем при коллективной разработке. Начинающий же программист в команде еще не работал, и чужой многолетний код ему еще не доставался в наследство. Поэтому скажу так: Нужно построить дом. Важна ли информация о строении атома для этой задачи? Так вот Spring (как и "конкурент" Java EE) это средство проектирования и строительства домов. Мастеру изготовления кирпичей - и с приплатой не нать. И производителю линолеума. И производителю сантехники. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 16:41:17 |
|
||
|
|

start [/forum/topic.php?fid=59&tid=2132331]: |
0ms |
get settings: |
17ms |
get forum list: |
29ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
45ms |
get topic data: |
15ms |
get forum data: |
4ms |
get page messages: |
91ms |
get tp. blocked users: |
3ms |
| others: | 376ms |
| total: | 594ms |

| 0 / 0 |
