|
|
|
Дублирую здесь вопрос по 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 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
забыл ник, - чтобы сравнивать работу программиста, нужен пример кода. Чтобы сравнивать работу повара, нужен пример блюда. Твой пример про экскаватор - прораб знает ОБА подхода. Я уже говорил, зайди на форум по другому ЯП - практически во всех примеров кода больше чем текстовки. Хелло ворд на ОРМ я сделал сам (не дождался :) ). Про спринг пока не хочу авторчто каждой задаче - свой инструмент. +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 16:46:06 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
SkyNINБудет много кода, но даже по этому коду преимуществ видно не будет, странный посыл. Ты прогеров за дураков держишь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 16:48:10 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
SkyNIN, я предлагаю наоборот, я буду спринг хвалить, а ты говорить его недостатки. Слабо? Это будет взвешенный подход технаря а не менеджера продаж. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 16:49:54 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Как то я привык к спрингу ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 16:53:35 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
ОзверинКак то я привык к спрингу ;) я пока боюсь первой дозы Выпью из копытца и конфигурастом стану. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 16:56:58 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Подумалось, раз процедурное программирование затронули. Представим Spring для plain C Есть набор инфраструктурных функций, нашего "Spring for plain C", которые возвращают указатели на функции определенных, нам известных сигнатур. Надо нам такая-то функция - запрашиваем ее указатель, и вызываем с нашими параметрами. А уж как она там прилинкована, что ей самой нужно для правильной работы - не наша забота. И описаны правила возврата указателей не на plain C, а в неких текстовых файлах. Причем, это описание фактически декларативному DSL. Специализация этого DSL - описание API не на используемом языке программирования, описание правил, параметров инициализации описание порядка и зависимостей инициализации Это описание позволяет вынести из кода общие свойства взаимодействия подсистем, и их составляющих компонент. То есть из GRASP: Low Coupling — это принцип, который позволяет распределить обязанности между объектами таким образом, чтобы степень связанности между системами оставалась низкой. применяется уже к самим законченным подсистемам или функциям, или объектам, а не к коду как таковому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 17:00:22 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123ОзверинКак то я привык к спрингу ;) я пока боюсь первой дозы Выпью из копытца и конфигурастом стану. Да это по желанию, можно наводнить проект самодокументируемыми аннотациями ;) Можно простынки xml писать. Я вот подсел сначала на aspectJ ...теперь перешел с него таки на aop spring`а - очень приятно иметь модульного монстра, в котором можно настроить даже тв ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 17:01:17 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
SkyNIN, справедливости ради , давайте указывать Spring IoC или о чем мы говорим ;) А то я в последнее время на голове волосами шевелить начал от того, чего в спринге наворотили ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 17:02:32 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123, Кто такой - прогер? Какова специализация, каков стаж? Я же сказал то что сказал - у начинающих программистов проблемы понимания подобных вещей - обычное дело. И объяснить им - сложно, зачем вот эта навороченная махина нужна. Petro123Это будет взвешенный подход технаря а не менеджера продаж. Какого еще менеджера продаж? Если ты программист на Java то я тебе проще скажу: Ты либо будешь работать в крупных проектах, и тогда: понимаешь ты, или не понимаешь, нравится тебе, или не нравится, тебя заставят изучать и писать на Spring, "Java EE" или еще каком OSGi Или ты будешь аутсайдером и троллем на форумах. Ну или уйдешь в "php". Не у меня к тебе вопросы о недостатках Spring. А у тебя непонимание масштабов проектов, в которых без него, или подобного фреймворка - был бы адский ужас. Petro123я предлагаю наоборот, я буду спринг хвалить, а ты говорить его недостатки. С какой целью мне это делать? Если бы с понимающим достоинства Spring - то да, полезный был бы обмен мнениями. А так - зачем мне это нужно? К тому же, есть два вида спрашивающих Одни ставят в конце вопроса вопросительный знак. Другие - восклицательный. Ты, мне начинает казаться, из вторых. Таким ничего не объяснить. Их сама жизнь фейсом об тейбл учит. И тебя научит. Или быть тебе аутсайдером в Java программировании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 17:11:00 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Озверин, И еще наворотят, не сомневаюсь :) Как по мне в данном разговоре важнее не виды "Spring"'а, а фундаментальные, главные, идеологические принципы которые заложены в семейство Spring. А доки там много, если обсуждать ее нюансы на форуме, то ох много буков будет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 17:13:42 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Озвериночень приятно иметь модульного монстра, в котором можно настроить даже тв ;) вооот. В этом корень противоречий. Одни любят писать универсальность (фреймворк\комбайны\DSL\...). Другие индивидуальный пошив сапог ДЛЯ заказчика. Я ко вторым ближе :) ЗЫ. Не смогут аннотации транзакций или связей классов обеспечить многообразие Модели (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 17:14:26 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
SkyNIN, дык не можешь объяснять просто технлогию - не пиши много букф. Или бери пример с окружающих. Их тут много (пишут плюсы и минусы). ЗЫ Не пиши много, давай лучше код. А то тему закроют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 17:18:10 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123, Petro123Другие индивидуальный пошив сапог ДЛЯ заказчика. Когда Зингер выпустил свою первую машинку - белошейки тоже возмущались, и доказывали что ручная то работа... Таперы в США в 20ых тоже доказывали что звуковое кино - буээээ Petro123Не пиши много, давай лучше код А я уже объяснил. Только ты не программист, а кодэр. Вот тебе и непонятно ничего с моих объяснений. И код тебе не поможет поднять свой уровень абстракции, на другой уровень. Выше кода на языке программирования. Petro123А то тему закроют. И правильно сделают. Не только мной, а и другими даны подсказки на вопрос - "а зачем же Spring на свете?". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 17:23:05 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
SkyNIN, всё, завязывай. Спринг - метауровень. Я согласен. Удачи тебе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 17:26:13 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123, дружочек сложно объяснить 5летнему почему седеющие мужчины боятся импотенции. А фейсом об тейбл тебе придется учиться. Или - поработать содержимым головы. Либо понимание придет снаружи - либо изнутри. Клясть же можешь кого угодно. Проблемы то у тебя, а не у меня, или у других успешно применяющих Spring и отбирающих жирные заказы у любителей писать лисапеды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 17:30:57 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
SkyNIN хорош троллить. Всё равно как у "забыл ник" у тебя не получается. Это не семечки на базаре продавать. забыл никAlexsalog, скорее всего Вам сейчас Spring и не нужен, раз вы не понимаете его преимуществ(это ни в коем случае не попытка троллинга или попытка обидеть). Тотальное навязывание всяких фреймворков весьма пагубно сказывается на людях, которые только начинают осваивать j2EE. Каждому начинающему просто необходимо попробовать написать j2ee приложение на голых jsp/servletах, и именно тогда вы сможете ощутить что дают спринги и т.п. Действительно, пока количество сервисов\контроллеров не превышает 10 есть соблазн не заморачиваться, но когда вам надоест создавая каждый новый сервис, тратить значительное время на связывание объектов, управление их жизненным циклом, управлением транзакциями, сложностью unit-тестирования, рефакторингом ранее созданных классов, то вы поймете, что гораздо лучше оставить тонны инфраструктурного кода на плечи Spring, а самим заняться бизнес-логикой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 17:43:57 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123, Так может я тебе пример покажу для спринга, что именно показать только? На каком примере показать идею? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 17:52:43 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123, не беда, мне не платят ни за троллинг ни за преподавание вот таким :) Так что в обоих умениях могу себе позволить быть полным профаном. Petro123Всё равно как у "забыл ник" у тебя не получается. А зачем мне дублировать чье-то объяснение? Раз уже было дано, и человек все равно не понял, попробовать нужно другое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 17:54:54 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
GregTkPetro123, Так может я тебе пример покажу для спринга, что именно показать только? На каком примере показать идею? вот на этом. Я показал, как программируют по старинке без спринг. 12223708 Будет конкретика. Мне флейм неинтересен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 17:56:27 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123Будет конкретика. Мне флейм неинтересен. Только непонятно, зачем ты его разводишь в каждом топике? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 18:03:13 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
LeonidvPetro123Будет конкретика. Мне флейм неинтересен. Только непонятно, зачем ты его разводишь в каждом топике? эта тема про архитектуру, тебе в другую - про пагинацию на спринг ______________________________________________ "Не понял" от Лёни 11906276 и чем всё закончилось 11910058 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 18:07:49 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123Озвериночень приятно иметь модульного монстра, в котором можно настроить даже тв ;) вооот. В этом корень противоречий. Одни любят писать универсальность (фреймворк\комбайны\DSL\...). Другие индивидуальный пошив сапог ДЛЯ заказчика. Я ко вторым ближе :) ЗЫ. Не смогут аннотации транзакций или связей классов обеспечить многообразие Модели (с) Скорее ко всем перечисленным, кто - то любит использовать фреймворк, чтобы освободить себя от трудоемкой рутинной низкоуровневой работы ;) p.s. Я не совсем согласен, что c высказыванием, что низкая связность классов в ООП ухудшает тестирование , кстати ; )Скорее ведь наоборот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 18:09:57 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
LeonidvТолько непонятно, зачем ты его разводишь в каждом топике? А это наверное такой вид ЧСВ. Другой, что часто встречаю у начинающих - а зачем эти ужасные хиберы? Вот, смотрите, я набросал библиотечку, какая простота и красота. Говоришь ему - ну-у-у-, это у тебя версия 0.01 пре-бэта iBATIS получилась, а он в ответ - нет! и iBATIS тоже гуано! Вот мой подход перевернет мир! Такие вот они, гонористые попиратели авторитетов :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 18:16:32 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Озвериннизкая связность классов в ООП это обширная тема. Конкретно про связность: - с одной стороны мы заменяем класс для удобства тестирования - с другой стороны, при низкой связности (напр. плагины в ИС) - нужно тестировать больше вариантов. Ведь связность именно для вариантности делают? - с 3-ей стороны должна быть хорошая поддержка IDE и рантайм. Мы ведь связи в конфиги выносим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 18:16:37 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123Озвериннизкая связность классов в ООП это обширная тема. Конкретно про связность: - с одной стороны мы заменяем класс для удобства тестирования - с другой стороны, при низкой связности (напр. плагины в ИС) - нужно тестировать больше вариантов. Ведь связность именно для вариантности делают? - с 3-ей стороны должна быть хорошая поддержка IDE и рантайм. Мы ведь связи в конфиги выносим. Нет, связность понижают в основном именно для тестирования, а спринг используют, чтобы точно все сеттеры при инициализации класса отработали. Другие варианты: билдер, но он тоже не обеспечить инициализацию Финализировать поля класса , но тогда тестирование с мокито усложняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 18:19:09 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123- с 3-ей стороны должна быть хорошая поддержка IDE и рантайм. SpringSource Tool Suite - не идеален, но много уже умеет. Другое направление развития средств работы с этим всем хозяйством - Spring Roo ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 18:19:38 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
SkyNINPetro123- с 3-ей стороны должна быть хорошая поддержка IDE и рантайм. SpringSource Tool Suite - не идеален, но много уже умеет. Другое направление развития средств работы с этим всем хозяйством - Spring Roo Spring Roo - это немного не в степь, все таки пока что это кодогенератор, весьма сырой и мало кем используемый по этой причине в коммерческом программировании ;) StS - кстати бодрый инструмент, но меня по работе подсадили на идею..теперь слезать не охота ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 18:21:20 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123, конфигурируем объект для работы с MongoDB Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Используем в классе DAO Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Вот такой вот Хеллоу ворлд в стиле IoC :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 18:45:33 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
GregTk, замечательно. Если не лень, напиши это без спринга (НЕ для холиваров). Или я попозже попробую. спс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 18:50:16 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Озверин, Да, в целом согласен. Добавлю только Как раз вынесение описания связей и инициализации из кода в некий DSL и дает отличный шанс создать инструменты в виде StS, или плагинов к Idea. Анализатор инфраструктурного Java кода проекта без Spring - куда сложней даже в теории. Тем же путем идет идут и в Eclipse RCP - для OSGi контейнера Equinox описание можно и рекомендуется задавать во внешних конфигах, которые уже неплохо конфигурируются плагинами же. Причем оставлена и полная динамика - все можно зашить и в Java код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 18:52:08 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123, Будет билдер и сеттер для поля вместо аннотации @Autowired :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 18:53:32 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
GregTkPetro123, Будет билдер и сеттер для поля вместо аннотации @Autowired :) у меня классов без конструкторов и параметров не бывает. Если ты об этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 18:56:23 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123, Пример в студию :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 19:14:22 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Тут уже правильную аналогию приводили с совочком и экскаватором. Обсуждать архитектурные вопросы на уровне приложений в 5 строк неправильно. Да еще строки при этом сравнивать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 22:09:15 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
GregTkПример в студию :) Да нет проблем :) Пример 1 ==================== Десктоп, Класс SavePosWin сохраняет положение окна owner'a. Инициализация после создания всех контролов. Сохранение положения окна при закрытии окна в деструкторе. Параметры: имя класса через this, True - сохранить, False - прочитать и установить через this Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. ====================== не совсем конструктор, но примера 2-4 разберём.... для 1 класса 2-ой четверти ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 22:21:33 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123, И как в этом примере, например, получить доступ к сервису, который работает с парочкой DAO? При этом DAO, в зависимости от окружение размещения могут быть разными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 23:52:59 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
GregTkPetro123, конфигурируем объект для работы с MongoDB Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Используем в классе DAO Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Вот такой вот Хеллоу ворлд в стиле IoC :) вот так выглядит без спринг: http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=925025&msg=12223783 Код: java 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 23:53:47 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Пример 2 ==================== Десктоп, Класс FormEditRowGrid модальное окно-форма редактирования выделенной строки грида, по событию - 2 клика на строке. Параметры: this для обратного вызова родителя-каллбэк, CollectionPosition - коллекция объектов с маркером на текущем объекте-строке Код: java 1. 2. 3. 4. 5. 6. 7. 8. ====================== вот такие ВИ\Use case\прецеденты у программиста. Уж какие есть :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 23:56:36 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123, Код: java 1. 2. 3. 4. 5. 6. 7. Собственно чем он отличается от моего примера? В том что нет аннотаций что ли? Вы берете у фабрики сессию. А разве спринг не тоже самое вам дает? Вы ведь не настраиваете сессию? Подходов тут правильных не много, а спринг просто позволяет это делать удобнее. Но результат будет один и тот же, контейнер или фабрика для нас будет создавть объекты в соответствии с нашими желаниями. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. А что здесь ты пытаешся показать? я не догоняю сорри... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 08:02:21 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
GregTk, 1. Отличается тем что написан без спринга и нет ненужного XML. Я хотел (вместе с автором) паттерн использования технологии (как напр. на хабре). Без выкриков Windows Must die. 2. Результат почти одинаков, т.к. в большинстве фирм таких утилит-фабрик навалом. И нет нужды на каждый проект писать XML-конфиг связей классов. 3. В Примере 1,2, я ответил ровно на твой вопрос - у меня большинство классов с конструктором и параметрами. Как чёрные ящики с одним входом поведением и выходом. Поэтому проинжектить не просто. ЗЫ. Примеры преимуществ IoC\DI несомненно есть .... для _части_ проектов. ______________________________________________ "Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн. AutoPOI.ru — ГИС-технологии для Oracle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 09:30:36 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=925025&msg=12223783 Т.е. вот такой копипаст в десятке-сотне методов это норм.? Код: java 1. 2. 3. 4. При этом всё прибито к единственной session factory и чтобы перейти на работу, например, с двумя базами нужно весь код перелопатить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 09:38:01 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123ЗЫ. Примеры преимуществ IoC\DI несомненно есть .... для _части_ проектов. Проблема управления зависимости актуальная для подавляющего большинства проектов размером больше 3х классов. Ни о какой "_части_" речь идти не может. То что она без DI решается через задний проход, ещё не значит что DI не нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 09:40:24 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, однозначно не ответить: - я это убрал БЕЗ спринга, обычным программированием (это пример прошлого века). - если разница в 1-2 строки кода "в коде" и избыточный XML, то я выберу программирование, а не конфигуразм. Т.е. пока не вижу причины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 09:42:29 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Blazkowiczбольшинства проектов размером больше 3х классов. - управления в рантайме? Зачем? - помнится VoDA спрашивал - как обозревать конфиги на 3000 строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 09:43:51 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro1231. Отличается тем что написан без спринга и нет ненужного XML. Ты как-то непоследователен в теме. Ты против поголовного использования Spring-XML или DI? Для DI существуют и другие легковесные фреймверке. Все инъекции можно и на pure Java организовать. Petro1232. Результат почти одинаков, т.к. в большинстве фирм таких утилит-фабрик навалом. Всё такое наследие лишь жалкое подобие того что уже есть в Apache Commons и других распространенных либах. На других платформах все хранят такие наработки. На Java это нафиг никому не нужно. Opensource решения намного более качественные и перекрывают функциональность с лихвой. Поэтому разработчики концентрируются на написании бизнес-логики, которая между проектами не переносится. Petro1233. В Примере 1,2, я ответил ровно на твой вопрос - у меня большинство классов с конструктором и параметрами. Как чёрные ящики с одним входом поведением и выходом. Если зависимостями даже через конструктор нельзя управлять, то соовтетственно и полиморфизм стремится у нулю, как в случае с твоими HibernateUtil ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 09:47:31 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123- я это убрал БЕЗ спринга, обычным программированием (это пример прошлого века). - если разница в 1-2 строки кода "в коде" и избыточный XML, то я выберу программирование, а не конфигуразм. Это всё к вопросу, тебе лично Spring XML не угоден, или DI? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 09:49:37 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123- управления в рантайме? Зачем? Зависимости в любом случае создаются в рантайме. Поэтому я вопроса не понял. Но они либо создаются извне классов - тем кто отвечает за управление зависимостями. Либо управление зависимостями размазано по всему проекту. Соответсвенно элементами проекта уже сложнее манипулировать, отдельно. Т.к. классы, зачастую, привязаны к конкретным экземплярам зависимостей. Можно провести аналогию с констркутором LEGO - элементы можно скреплять как угодно. В случае если зависимостями классы управляют сами, то мы имеем несколько монолитных блоков. И чтобы их скрепить в альтернативном варианте, нужно плотно поработать напильником. Petro123- помнится VoDA спрашивал - как обозревать конфиги на 3000 строк. Это к теме отношения не имеет. Точно так же как и классы на 20000 строк. (Есть у нас в одном проекте такой) Spring XML чудесно поддерживает импорты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 09:55:52 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, - я против и XML и DI поголовного. Поголовное всё плохо. Молиться не люблю, что и написал "забыл ник". Кстати, логгер тоже инжектить надо? - я тут читал, что у большинства свои наработки. Может врут. - управлять кодом в рантайме это круто. Рукой подать до скриптов пользователя и DSL. Я предпочитаю ТЗ и управлять БЛ. Хотя твой сабж имеет место быть. Не спорю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 10:01:09 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
BlazkowiczЗависимости в любом случае создаются в рантайме нет. Это модель. Она статична либо в XML либо в коде. Создаётся в рантайме при загрузке (метамодель), а ОПИСЫВАЕТСЯ в статике-дезигн. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 10:03:07 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
BlazkowiczМожно провести аналогию с констркутором LEGO - элементы можно скреплять как угодно. В случае если зависимостями классы управляют сами, то мы имеем несколько монолитных блоков. И чтобы их скрепить в альтернативном варианте, нужно плотно поработать напильником. конечно. Можно в ИС бухгалтерия для нового отчёта прислать Jar\dll\... А можно новый протестированный ОтчётФорма12_DI_IoC.XML. Короче комбайн для заказчика. Такие тоже есть. Только такие ERP вряд ли имеют отношение к сабжу. imho ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 10:08:55 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123- я против и XML и DI поголовного. Поголовное всё плохо. Это да. Речь идет о том, что при программирование бизнес-приложений DI очень хорош. Снимается лишняя головная боль "а где мне взять класс" и при необходимости снимается головная боль "а как мне тут это поменять". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 10:11:20 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
LeonidvСнимается лишняя головная боль "а где мне взять класс" и при необходимости снимается головная боль "а как мне тут это поменять". вот вся причина. Тему можно закрывать. - забыл где взять класс и написано так, что проблема "поменять". Всё выяснили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 10:15:54 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123, Я непонимаю твой поток сознания, spring это реализация IoC, мой пример с xml только потому что это настройка для соединения с базой, можно обойтись вообще без xml, можно разделить xml на логические куски(ввиде отдельных xml файлов) чтоб не пугаться 3000 строк. Но речь не о том, а о подходе. Мне реально интересно в каких проектах и с каким ТЗ это принесет зло? Есть пример такой задачи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 10:40:39 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
GregTk, Я говорю вроде очевидные вещи. Мы не секта, и говорить что всегда нужен спринг - глупо. Можно спорить о кол-ве классов или размере проектов (3,5- 500). imho Зло он не принесёт. Он принесёт оверхед, который нельзя измерить. >Есть пример такой задачи? Здесь их 4: - нужен ли спринг для инжекции класса логгера - твой пример0 - мой пример1 и 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 10:50:47 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
GregTkPetro123, Я непонимаю твой поток сознания, spring это реализация IoC, мой пример с xml только потому что это настройка для соединения с базой, можно обойтись вообще без xml, можно разделить xml на логические куски(ввиде отдельных xml файлов) чтоб не пугаться 3000 строк. Но речь не о том, а о подходе. Мне реально интересно в каких проектах и с каким ТЗ это принесет зло? Есть пример такой задачи? spring это НЕ реализация IoC. На этом надо остановиться ;) Spring - это фреймворк, один из компонент которого реализует IoC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 11:00:53 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Озверин, полностю согласен, но как не странно этот компонет один из самых важных при работе со Spring Framework ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 11:53:14 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
GregTkОзверин, полностю согласен, но как не странно этот компонет один из самых важных при работе со Spring Framework пока тут речь шла об удобствах программиста (про конфиг классов у заказчика опустим). Сомнительный критерий для Важности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 11:56:03 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Я один ни в одном посте Petro123 так и не понял, что же он конкретно хотел сказать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 16:25:24 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
fixxerЯ один ни в одном посте Petro123 так и не понял, что же он конкретно хотел сказать? Он считает что Spring XML, как и DI вообще это оверхед на целом ряде проектов. Как он пришел к таким выводам, я не очень понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 16:31:04 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
При этом всё прибито к единственной session factory и чтобы перейти на работу, например, с двумя базами нужно весь код перелопатить? Для того чтобы перейти на работу с двумя базами, надо будет в каждом месте, где используется база, указать, где используется первая база, а где вторая. Для этого в любом случае придется перелопатить весь проект. В примере Petro надо будет просто заменить HibernateUtil.getSessionFactory().openSession() на HibernateUtil.getAnotherSessionFactory().openSession() - это минимальная правка, короче никак нельзя сделать. Т.е. вот такой копипаст в десятке-сотне методов это норм.? Используйте AspectJ если вам сложно написать такой код. AspectJ не требует никаких спрингов и прочих DI. Вообще в Java тупой копипаст неизбежен. Пример - фильтрация списка: List<SomeBusinessObject> newList = new ArrayList<SomeBusinessObject>(); for(SomeBusinessObject o : oldList) if(satisfiesSomeCriteria(o))) newList.add(o); У меня в эклипсе есть даже сниппеты для операций со списками. В C# код выглядит примерно так: var newList = oldList.Filter({satisfiesSomeCriteria(_)}) Мне кажется странным бороться с копипастом в одном отдельно взятом месте (открывание и закрывание транзакций) с помощью таких тяжелых средств, как генерация кода в рантайме с помощью многомегабайтных либ, при том что рядом будет еще более ужасный копипаст. Вообще так можно дойти до идиотизма - открывать и закрывать файлы с помощью AOP: @FileOperation(file="config.properties",mode=Mode.WRITE,) void saveConfigToFile(Config cfg){ FileOutputStream os = FileUtils.getOutputStream();//аналог Spring DataSourceUtil.getConnection() cfg.write(os); // do not close stream - it will be automagically closed by AOP } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 16:35:24 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
fixxerЯ один ни в одном посте Petro123 так и не понял, что же он конкретно хотел сказать? когда у тебя Java в профиле будет меньше 80% тогда поймёшь. (Без обид, по доброму) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 16:41:53 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
авторкогда у тебя Java в профиле будет меньше 80% тогда поймёшь. Согласен. Java - весьма своеобразный и мир, нельзя на нем зацикливаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 16:48:49 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪДля того чтобы перейти на работу с двумя базами, надо будет в каждом месте, где используется база, указать, где используется первая база, а где вторая. Для этого в любом случае придется перелопатить весь проект. В примере Petro надо будет просто заменить HibernateUtil.getSessionFactory().openSession() на HibernateUtil.getAnotherSessionFactory().openSession() - это минимальная правка, короче никак нельзя сделать. А, если мне нужно один и тот же метод в разных базах, в зависимости от контекста? Это всё нормально настраивается при DI, но в примере Petro123 - опять перелопачивать все DAO. Я лишь показываю как в конкретное данном примере изменения, внешние для слоя DAO начинают менять код самих DAO. Это очень показательный пример, который показывает как статические синглтоны убивают полиморфизм, который можно сохранить при использовании DI. Мы же не говорим конкретно о работе DAO или Hibernate. Мы сравниваем - статический синглтон HibernateUtil.getSessionFactory() с DI. Очевидно что статический синглтон не обладает полиморфизмом и является глобальной переменной. Поэтому код с его использованием вызывает большую волну изменений. Чем при использовании DI, где зависимости подменить проще и за счет этого волна изменений гасится быстрее. Йуный джавистЪИспользуйте AspectJ если вам сложно написать такой код. AspectJ не требует никаких спрингов и прочих DI. Я не спрашивал как именно сделать лучше. Я лишь указал на недостаток кода, который был приведен как контрпример DI. Причем не самый удачный. Йуный джавистЪВообще в Java тупой копипаст неизбежен. Тут есть нюансы. Во-первых вы правы в том что в некоторых случаях копипаст в Java проще. Потому что если применять функциональные подходы на генериках и анонимных классах, то результат приведет к коду в два раза больше и раз в пять сложнее для чтения. Хотя функциональный код вообще сложнее для чтения и фильтры это классический пример. Во-вторых не так давно я осознал что копипаст местами не такое уж и зло. Например в GUI формах. Которые часто подвержены изменениям, переиспользование кода часто усложняет дальнейшие более тонкие и индивидуальные изменения. Ну, и в-третих вы правы, это все же к DI имеет не самое прямое отношение. Можно тему копипаста дальше не развивать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 16:51:37 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪИспользуйте AspectJ если вам сложно написать такой код. AspectJ не требует никаких спрингов и прочих DI. некоторым может показаться, что спор о спринге. на самом деле он о проектировании классов. я думаю нашему "программисту" AspectJ нужен еще меньше, чем IOC. Йуный джавистЪВообще в Java тупой копипаст неизбежен. Пример - фильтрация списка: В C# код выглядит примерно так: var newList = oldList.Filter({satisfiesSomeCriteria(_)}) прошу любить и жаловать, commons collections (generic разновидность) запись менее компактна в силу понятных причин однако Код: java 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 16:57:02 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, я не понял твоей хотелке "поиметь" сразу 2 БД. Ты в рантайме ПОЛЬЗОВАТЕЛЕМ хочешь менять. Или конфигом аппСервера или как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 16:58:26 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123я не понял твоей хотелке "поиметь" сразу 2 БД. Ты в рантайме ПОЛЬЗОВАТЕЛЕМ хочешь менять. Или конфигом аппСервера или как? Речь не о 2х БД пользователях и пр. Речь о сравнении статических синглтонов (Singleton.getInstance()) и не статических DI. Есть статический метод getSessionFactory(). Он не обладает полиморфизмом. Соответсвенно проблема - не может быть двух SessionFactory без значительных изменений в коде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 17:04:51 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Есть статический метод getSessionFactory(). Он не обладает полиморфизмом. Можно ранее в треде устанавливать ThreadLocal переменную, которую getSessionFactory() потом будет читать. Тогда getSessionFactory() становится полиморфным. В Common Lisp, например, System.out является полиморфным из коробки посредством использования похожего механизма (dynamic scoping). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 17:29:27 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪМожно ранее в треде устанавливать ThreadLocal переменную, которую getSessionFactory() потом будет читать. Тогда getSessionFactory() становится полиморфным. В Common Lisp, например, System.out является полиморфным из коробки посредством использования похожего механизма (dynamic scoping). ThreadLocal подходит только многопоточного сервера. И таким образом вы утверждаете что ThreadLocal лучше чем полноценный полиморфизм? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 17:32:53 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
ThreadLocal подходит только многопоточного сервера. Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 17:38:40 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
BlazkowiczСоответсвенно проблема - не может быть двух SessionFactory без значительных изменений в коде может я ничего не понял. Но на кой мне Две фабрики? Это же синглетон - статика? Все конфиги-варианты через XML хибера (до загрузки). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 17:39:12 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Blazkowicz Если хочешь - приводи задачу с одной базой и изменение в требованиях, которое требует вторую базу. Я напишу сначала код, который выполняет исходную задачу, потом отрефакторю под новые требования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 17:42:13 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪBlazkowicz Если хочешь - приводи задачу с одной базой и изменение в требованиях, которое требует вторую базу. Я напишу сначала код, который выполняет исходную задачу, потом отрефакторю под новые требования. +1 а то я туплю и не врубился в фичу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 17:43:54 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪПочему? Потому что GUI, например, однопоточный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 17:51:55 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123может я ничего не понял. Но на кой мне Две фабрики? Например, для работы с разными БД. Petro123Это же синглетон - статика? Эта статика у тебя прописана в каждом DAO - глобальная не полиморфная зависимость. Petro123Все конфиги-варианты через XML хибера (до загрузки). ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 17:55:23 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪЕсли хочешь - приводи задачу с одной базой и изменение в требованиях, которое требует вторую базу. Я напишу сначала код, который выполняет исходную задачу, потом отрефакторю под новые требования. Ещё раз. Базы тут не причем. Проблема двух баз это не самоцель. Это следствие использование статического синглтона. Лучше ты объясни почему статический синглтон лучше чем DI? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 17:56:46 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Базы тут не причем. Зачем тогда ты о них завел речь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 17:58:35 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪЯ напишу сначала код, который выполняет исходную задачу, потом отрефакторю под новые требования. Вооот. В том и дело, что при использовании глобального статического синглтона тебе придется менять все классы, которые его использовали. А вот в случае с DI тебе нужно поменять только сам синглтон и DI - рефакторинг локализован. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 17:58:51 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Вооот. В том и дело, что при использовании глобального статического синглтона тебе придется менять все классы, которые его использовали. Либо не придется, либо их придется менять и в случае со спрингом. Ставь задачу, и я это докажу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 18:00:44 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪБазы тут не причем. Зачем тогда ты о них завел речь? Потому что эта проблема возникает при использовании контрпримера Petro123 - HibernateUtil.getSessionFactory() приводит к проблемам не полиморфного getSessionFactory(). Проблема неполиморвного getSessionFactory() это проблема заиметь несколько баз. Когда тоже самое сделано через DI. Контейнер уже управляет тем как и когда SessionFactory используется в DAO. Соответсвтенно, в зависимости от контекста, можно инжекстить разные SessionFactory без изменения самих DAO. Постарайтесь следить за темой топика. Больша объяснять не буду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 18:02:06 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪЛибо не придется, либо их придется менять и в случае со спрингом. Ставь задачу, и я это докажу. В случае с IoC меняется контейнер и синглтон. В случае со статическим синглтоном, меняется сам синглтон и все методы, которые его используют. Вы постоянно пытаетесь свести задачу дизайна к частным случаям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 18:04:02 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, я тебя понял. Только ты ссылаешься на 2 БД \ 2 логгера \ 2 ОРМ'a одновременно в проекте. А с другой стороны - "это выдуманный пример". Программист в каждой строке выбирает, какой scope использовать. От глобальных и статичных, до полиморфизма для "полиморфной логики". Пример только хромает. IMHO BlazkowiczПроблема двух баз это не самоцель тогда самоцель - спринг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 18:04:36 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВ случае с IoC меняется контейнер и синглтон. это и есть оверхед. Менять сверху МетаЯзыком статичный код "на будущее". Ещё так можно: Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 18:08:57 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123это и есть оверхед. Это не есть оверхед, потому что в твоём подходе любые изменения синглтона затрагивают все классы, которые его используют. У меня более сотни методов в DAO. И при использовании синглтона для SessionFactory, мне пришлось бы их все менять. Petro123Менять сверху МетаЯзыком статичный код "на будущее". Ещё так можно: Код: java 1. Это Service Locator. К DI отношения не имеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 18:22:41 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Вы постоянно пытаетесь свести задачу дизайна к частным случаям. Служенье муз не терпит суеты; Прекрасное должно быть величаво. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 18:27:02 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123Только ты ссылаешься на 2 БД \ 2 логгера \ 2 ОРМ'a одновременно в проекте. А с другой стороны - "это выдуманный пример". Использование HibernateUtil.getSessionFactory() это лишь единичный пример. Я показал чем он плох. Готовность проекта к изменениям это важный фактор его устойчивости. У тебя и остальной код на таких же синглтонах? Petro123Программист в каждой строке выбирает, какой scope использовать. При чем здесь программист и как он выбирает? Вопрос только в том как именно он этот scope задаёт. Прибивает ли он железно scope к классу, или оставляет возможность использовать класс в любых контекстах по его прямому назначению. Petro123тогда самоцель - спринг Когда других аргументов не осталось, можно использовать такой приём из женской логики. Ляпнуть что-то не относящееся к обсуждению. DI это не оверхед. Управление зависимостями выносится из классов в другие классы. Вот и всё. Соответственно достигается Single responsibility principle. У тебя DAO имеет две роли 1. Сохраняет объекты. 2. Определяет где и как искать SessionFactory. С DI остаётся только одна роль. Оверхеда нет. У тебя локатор в каждом методе. В DI - инжекция в контейнере. Количество кода одинаковое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 18:30:26 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Вот здесь вы можете найти более внятные аргументы про недостатки DI, чем "оверхед". Можете их использовать. А то что-то своих никак не насобираете. Кроме того что "две базы никогда не нужны". http://stevenharman.net/blog/archive/2009/09/25/prefer-dependency-injection-to-service-location.aspx http://stackoverflow.com/questions/6291331/service-locator-vs-dependency-injection http://martinfowler.com/articles/injection.html Но все сходятся в одном мнении. В подавляющем большинстве случаев DI предпочительнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 18:39:32 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123fixxerЯ один ни в одном посте Petro123 так и не понял, что же он конкретно хотел сказать? когда у тебя Java в профиле будет меньше 80% тогда поймёшь. (Без обид, по доброму) Это прием такой сразу на личности переходить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 18:56:09 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, спс. за обсуждение. Очень интересно про Роли. Действительно, мне не нужно чтобы DAO стал ещё глупее и не знал какое хранилище в него воткнут. Хотя вашу т.з. тоже понимаю. Было бы очень удобно вместо логгера или ссылки на Хранилище писать: Код: java 1. 2. Ну просто, чисто, макрос из С++. Это мы ещё простейший Пример #0 разобрали. Его проще под DI подогнать. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 21:08:05 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
fixxerPetro123пропущено... когда у тебя Java в профиле будет меньше 80% тогда поймёшь. (Без обид, по доброму) Это прием такой сразу на личности переходить? нет. Это скорее исключение из правил. Тем более, я просил не обижаться. Удачи! ______________________________________________ "Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн. AutoPOI.ru — ГИС-технологии для Oracle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 21:09:41 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123Было бы очень удобно вместо логгера или ссылки на Хранилище писать: Код: java 1. 2. В чем великая разница между тем, что ты здесь написал и вот этим?: Код: java 1. Можно сказать, что это service locator, но помне так гораздо больше похоже на инжекцию логгера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 21:26:11 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Так, я тут припоздал, так о чем спор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 22:22:09 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
забыл никТак, я тут припоздал, так о чем спор? Dependency Injection, оказывается, говно, как и весь Spring. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 22:42:36 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
LeonidvPetro123Было бы очень удобно вместо логгера или ссылки на Хранилище писать: Код: java 1. 2. В чем великая разница между тем, что ты здесь написал и вот этим?: Код: java 1. Можно сказать, что это service locator, но помне так гораздо больше похоже на инжекцию логгера. Тем, что непонятно, почему в классе должна быть сквозная логика, к классу отношения ну никакого не имеющая ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 22:55:26 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
ОзверинLeonidvпропущено... В чем великая разница между тем, что ты здесь написал и вот этим?: Код: java 1. Можно сказать, что это service locator, но помне так гораздо больше похоже на инжекцию логгера. Тем, что непонятно, почему в классе должна быть сквозная логика, к классу отношения ну никакого не имеющая ;) То есть огромная разница между синтаксисом @logger и = ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2012, 00:08:08 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
В программировании как в шахматах - все зависит от позиции ну и шахматиста ;) Вот пример простой задачи в которой использования DI/IoC (готового spring) эффективно: Код: sql 1. 2. 3. 4. менеджер логики имеет набор атрибутов и прочих вложенных менеджеров (которые могут наследоваться) влияющих на определенное поведение, к примеру, производительность системы. spring справляется с поставленной задачей на ура: декларативная конфигурация бинов - не нужно придумывать собственный формат конфигурации, (моделирование, валидация, рефлексия) не нужно придумывать механизм управления контекстом, так как спринговый контекст может быть вложенным. В том же вебе можно инжектить сервисы в зависимости от пользовательских ролей или ситуаций. Огромнейший плюс spring это обвязка большого кол-ва всяких фреймворков, которые часто лень осваивать из за плохой документации и особенно ломает, когда приходится выбирать из нескольких, реализующих одну и туже задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2012, 07:13:30 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
LeonidvОзверинпропущено... Тем, что непонятно, почему в классе должна быть сквозная логика, к классу отношения ну никакого не имеющая ;) То есть огромная разница между синтаксисом @logger и = ? А вы как думали? @logger - аннотация лишь указывает на свойство класса...допустим: логгировать его exception`ы, тогда как наличие статического поля logger - это уже логика класса. Я по-крайней мере так к этому подхожу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2012, 08:48:15 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
bajorkОгромнейший плюс spring это обвязка большого кол-ва всяких фреймворков этот пункт будет ненадолго, т.к. фреймворки становятся умнее. И эта обвязка, как собаке 5 нога. Например, спринг+GWT\SmartGWT не такое рядовое занятие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2012, 09:27:57 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Озверин@logger - аннотация лишь указывает на свойство класса...допустим: логгировать его exception`ы, тогда как наличие статического поля logger - это уже логика класса. Я по-крайней мере так к этому подхожу. да, причём в виде над_уровня над синтаксисом ЯП - метапрограммирование из разряда препроцессинга. Или код над кодом. Я бы сильно обрадовался, если бы этот механизм убрал сеттеры и геттеры (property) или позволял писать компактный код: Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2012, 09:34:51 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123Озверин@logger - аннотация лишь указывает на свойство класса...допустим: логгировать его exception`ы, тогда как наличие статического поля logger - это уже логика класса. Я по-крайней мере так к этому подхожу. да, причём в виде над_уровня над синтаксисом ЯП - метапрограммирование из разряда препроцессинга. Или код над кодом. Я бы сильно обрадовался, если бы этот механизм убрал сеттеры и геттеры (property) или позволял писать компактный код: Код: java 1. Так используй Spring AOP - будет тебе логгер на уровне аннотаций ;) Насчет Spring+GWT - я глянул.на спринге есть нормальный пример ..вроде ;) все как обычно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2012, 09:38:32 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Озверин, 1. Я сказал что такое аннотация по сути, но я не поддерживаю их для ненужных вещей: - связи классов - это бизнес-логика - _часть_ транзакций - это бизнес-логика Т.е. логгер или Хранилище (хибер-синглетон) это банальные глобальные переменные которые мне не мешают и не мозолят глаза. Сеттеры мозолят их больше и на БЛ они не влияют. Т.е. спринг мне пока ничем не помогает Может не дорос ещё до нирваны. 2. Вопрос только, зачем Smart'у спринг :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2012, 09:47:56 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Озверин@logger - аннотация лишь указывает на свойство класса...допустим: логгировать его exception`ы, тогда как наличие статического поля logger - это уже логика класса. Я по-крайней мере так к этому подхожу. Интересно. Журналировать exception чего именно указано в примере, о котором речь идет? И я уверен, что изначально petro123 имел ввиду инжекцию логгера. Исключения с помощью aop хорошо журналировать и обрабатывать, но часто этого не хватает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2012, 12:51:27 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2132331]: |
0ms |
get settings: |
17ms |
get forum list: |
40ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
86ms |
get topic data: |
25ms |
get forum data: |
6ms |
get page messages: |
194ms |
get tp. blocked users: |
2ms |
| others: | 345ms |
| total: | 731ms |

| 0 / 0 |
