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

я почитал и честно говоря не понял в чем глубокий смысл этого фреймворка.

1) IoC - допустим мне надо создать объект. Так я не создаю его напрямую, а непременно заказываю у фабрики. Зачем ?
Если только затем, чтобы не прописывать в коде явно ссылки на определенные классы и не делать такую неразборную конструкцию, то почему для этого недостаточно интерфейсов?

2) Допустим мне надо установить зависимости между объектами. Как бы я действовал: создал бы крупный класс, в котором все вспомогательные объекты создаются и используются по необходимости. А Spring что дает ? Что облегчает? От чего избавляет ?

В целом понимаю что Spring делает, но не понимаю почему именно так и чем это лучше традиционного программирования ?
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37698322
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexsalog,

автор1) IoC - допустим мне надо создать объект. Так я не создаю его напрямую, а непременно заказываю у фабрики. Зачем ?
Если только затем, чтобы не прописывать в коде явно ссылки на определенные классы и не делать такую неразборную конструкцию, то почему для этого недостаточно интерфейсов?


Главное что дает нам Spring это слабое связывание компонентов между собой. Также он отвечает за правильное инстанциирование компонентов(выступает контейнером). Один из плюсов это легкость Unit тестирования. Легкость проектирования. Да и впринципе удобно когда можно контролировать создание объектов, тогда можно будет легко логировать действия, выстраивать security layer. Плюсов масса.

авторВ целом понимаю что Spring делает, но не понимаю почему именно так и чем это лучше традиционного программирования ?

С этого момента по подробнее пожалуйста. Что вы под этим понимаете?
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37698406
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTkС этого момента по подробнее пожалуйста. Что вы под этим понимаете?
как говорил, blazkowicz: "вот и выросло поколение, которое не знает традиционного, без инжекции".
Шутка :)
Было бы несправедливо, промолчать о минусах сабжа:
- оверхед (на небольших проектах спринг не нужен)
- слабое связывание в ООП усложняет тестирование\сопровождение\управление\отладку
- в вебе очень короткий жизненный цикл объектов + многопоточность, поэтому инжекция особо не нужна.
- связи между классами, это тоже БЛ, и _не все_ любят читать контекст БЛ в отдельном XML.

Пример без спринга (традиционная ориентация :) )
1.
Obj = HiberUtilitu.GetSession
2.
valObj = new Obj.ИменованыйКонструктор(параметры

Замечательно, что у нас нет догм и можно писать традиционно и НЕтрадиционно :). Кому как нравится.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37698553
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Понеслась.... :)

При чём здесь инжекция? Это раз.
автор- оверхед (на небольших проектах спринг не нужен)

Как измерить?

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

что для вас веб? а то у меня веб это только морда и спринга там почти нет, кроме доступа к сервисам.


авторслабое связывание в ООП усложняет тестирование\сопровождение\управление\отладку


"А ещё "слабое связывание" ест детей"(из той же темы) Это БРЕД! покажите пример.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37698558
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTk,
бери и сам показывай пример. Я показал.
Я линейку принесу.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37698561
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTkи спринга там почти нет,
и у меня тоже.
Пусть другие спорят.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37698564
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

вот и разобрались ))
Надо было сразу с ленейки начать )
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37698569
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTk,
конечно.
Тут хелло ворд от ОРМ не дождаться, не то что от преимущества спринг.
Аффтар плюсы и минусы прочёл - пусть выбирает.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37698638
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123- оверхед (на небольших проектах спринг не нужен)

Spring во много облегчает жизнь на проектах любых размерах. В любом случае, сказать "небольшой" ничего не сказать. Для кого это 5kLOC, для кого-то 500kLOC

Petro123- слабое связывание в ООП усложняет тестирование\сопровождение\управление\отладку

Как раз этому и помогает. Прочитайте про модульное тестирование.

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

Жизненный цикл сервисов - время жизни приложения. Это короткий или длинный?
При чем тут многопоточность, непонятно.

Petro123- связи между классами, это тоже БЛ, и _не все_ любят читать контекст БЛ в отдельном XML.

Для тех, кто не любят в Spring 3.1 сделали возможности удобной конфигурации в классах. Плюс, есть очень красивый проект Spring Integration Scala DSL

В целом - необоснованные заявления, которые не имеют ничего общего с действительностью.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37698644
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опять болтовня без кода пошла
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37698729
vas0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexsalog,

Зачем вообще была придумана Java 2 Enterprise Edition, все эти Application Servers, MOM и Middleware?

Если коротко ответить, то разработчику дают готовую инфраструктуру, готовые сервисы (управление безопасностью, управление потоками, управление транзакциями и т.п.).

Фактически в любом более менее крупном проектом встает вопрос, создавать инфраструктурный код самому или воспользоваться уже готовым решением.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37698932
Alexsalog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vas0Alexsalog,

Зачем вообще была придумана Java 2 Enterprise Edition, все эти Application Servers, MOM и Middleware?

Если коротко ответить, то разработчику дают готовую инфраструктуру, готовые сервисы (управление безопасностью, управление потоками, управление транзакциями и т.п.).

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

Это понятно. Особенно про готовое решение. То есть берем фреймворк или среду разработки и сознаем - эта штука сокращает наши трудозатраты потому то и потому. Я хочу осознать что облегчает разработку в случае со Spring. Вариант ответа:

1) Структуру объектов теперь можно описывать декларативно через XML и не заморачиваться с вызовом конструкторов в нужной последовательности и передачей параметров.

2) Сложные объекты не нужно создавать как единое целое - благодаря Spring по прежнему имеем нормальную удобную декомпозицию (для тестирования хорошо), а благодаря, опять же, более понятным, чем простыня кода, декларациям в XML мы эти компоненты можем объединять в некие комплексы, обладающие нужным нам поведением.

Это я так понял. И ключевым тут является, что код. которым можно сделать тоже самое, заменяется XML декларациями. Я правильно понимаю ?
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37698942
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexsalog,
да. Всё верно.
Только
авторопять же, более понятным, чем простыня кода, декларациям в XML
это на любителя - попробуй почитать XML вместо кода.
И кода, с учётом XML будет не намного меньше.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37698947
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexsalog ,
Корень вашего вопроса лежит не в Спринге, а в непонимании такой вещи, как Inversion of Control . Для вкуривания рекомендую Фаулера - http://www.shmakov.ru/news/text120.html
Можно еще покурить MSDN - http://msdn.microsoft.com/en-us/library/ff648478.aspx
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37698957
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svenom,
где попадал?
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37699013
vas0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexsalog,

Spring очень гибкий, можешь использовать XML, можешь не использовать. Честно говоря непонятно в чем вопрос. Попробуй сам ответить на такой вопрос:

"Посмотрел я на .net и честно говоря не понял в чем глубокий смысл этого подхода. В целом понимаю что .net делает, но не понимаю почему именно так и чем это лучше традиционного программирования ?"
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37699042
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vas0,
ну ты заменил, слово "спринг" на "net" :)
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37699103
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexsalogЭто я так понял. И ключевым тут является, что код. которым можно сделать тоже самое, заменяется XML декларациями. Я правильно понимаю ?
Да. Плюс, поскольку почти все объекты начинают доставаться из контекста спринга, можно делать много разных вкусных вещей вроде AOP.
Дополнительно в Spring уже много чего кроме DI, поэтому пользоваться им просто удобно.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37700432
Alexsalog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonidvAlexsalogЭто я так понял. И ключевым тут является, что код. которым можно сделать тоже самое, заменяется XML декларациями. Я правильно понимаю ?
Да. Плюс, поскольку почти все объекты начинают доставаться из контекста спринга ...

А как это? Можете привести пример ? Не в коде, а так "на пальцах".
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37700677
SkyNIN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexsalog IoC - допустим мне надо создать объект. Так я не создаю его напрямую, а непременно заказываю у фабрики. Зачем ?
Затем что просто создать объект - обычно недостаточно, его еще нужно проинициализировать. И частенько, для этой инициализации еще создаются другие объекты. А для них, еще, и еще. Хотите брать эту ответственность на себя - дело хозяйское. Только при рефакторинге, или иной переделке системы придется и эту часть переделывать
Во-вторых фабрика обычно возвращает интерфейсный объект. Работа же по интерфейсу - уменьшает зависимость от реализации
В-третьих - какие-то объекты могут быть синглтонами, какие-то хранится в пуле. Опять же, вам все равно, что дали с тем и работаете спокойно

AlexsalogДопустим мне надо установить зависимости между объектами. Как бы я действовал: создал бы крупный класс, в котором все вспомогательные объекты создаются и используются по необходимости. А Spring что дает ? Что облегчает? От чего избавляет ?
Вот от этого и избавляет - "создал бы крупный класс, в котором все вспомогательные объекты создаются и используются по необходимости." Это ведь порядочная часть кода. Который требует отладки. А потом - модификации. Оно вам надо?

Описание же связей между объектами в Спринге вообще выносится из языка программирования в конфиги. Все, голова не болит о связях, и правильной их инициализации. Решай задачу ту что нужно, а не пиши инфраструктуру, чтобы начать решать задачу ту что нужно.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37700726
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkyNIN,
связи убрал, инициализацию состояния убрал - что осталось без связей и состояния?
Правильно - процедурное программирование.
Осталось только пример привести.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37700883
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexsalog, скорее всего Вам сейчас Spring и не нужен, раз вы не понимаете его преимуществ(это ни в коем случае не попытка троллинга или попытка обидеть). Тотальное навязывание всяких фреймворков весьма пагубно сказывается на людях, которые только начинают осваивать j2EE. Каждому начинающему просто необходимо попробовать написать j2ee приложение на голых jsp/servletах, и именно тогда вы сможете ощутить что дают спринги и т.п.
Действительно, пока количество сервисов\контроллеров не превышает 10 есть соблазн не заморачиваться, но когда вам надоест создавая каждый новый сервис, тратить значительное время на связывание объектов, управление их жизненным циклом, управлением транзакциями, сложностью unit-тестирования, рефакторингом ранее созданных классов, то вы поймете, что гораздо лучше оставить тонны инфраструктурного кода на плечи Spring, а самим заняться бизнес-логикой.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701048
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,

Хороший совет.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701050
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТут хелло ворд от ОРМ не дождаться, не то что от преимущества спринг.

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


А теперь представим что вам дали задание выкопать траншею 30мх1м и глубиной метр, на основании вывода что экскаватор говно - вы целый день копаете лопатой и к вечеру с успехом отчитываетесь перед мастером о том что вам осталось всего 15 дней чтобы выполнить задачу. Мастер отправляет вас на больничный и звонит на соседний участок, вызывая экскаватор, который за два часа вырывает траншею, ваше мировоззрение опять меняется, и вы приходите к выводу, что каждой задаче - свой инструмент.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701063
SkyNIN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

При чем тут процедурное, или еще какое программирование программирование?

Spring - это средство сборки приложения. Это другой уровень абстракции нежели парадигма языка программирования.

Petro123Осталось только пример привести.

По опыту общения с начинающими - малополезно.
Будет много кода, но даже по этому коду преимуществ видно не будет, пока мышление программиста находится на уровне задач
"вывод строки Hello world в консоль"

Кроме того, начинающий программистам очень сложно объяснить, что когда над проектом работает более 5ти человек одновременно, то головняк это уже не только тим-лида или иного менеджера. И многие средства в программировании, например и Spring и появились для уменьшения проблем при коллективной разработке.
Начинающий же программист в команде еще не работал, и чужой многолетний код ему еще не доставался в наследство.

Поэтому скажу так:
Нужно построить дом.
Важна ли информация о строении атома для этой задачи?

Так вот Spring (как и "конкурент" Java EE) это средство проектирования и строительства домов.
Мастеру изготовления кирпичей - и с приплатой не нать.
И производителю линолеума.
И производителю сантехники.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701081
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,
- чтобы сравнивать работу программиста, нужен пример кода. Чтобы сравнивать работу повара, нужен пример блюда.
Твой пример про экскаватор - прораб знает ОБА подхода.
Я уже говорил, зайди на форум по другому ЯП - практически во всех примеров кода больше чем текстовки.
Хелло ворд на ОРМ я сделал сам (не дождался :) ).
Про спринг пока не хочу
авторчто каждой задаче - свой инструмент.
+1
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701087
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkyNINБудет много кода, но даже по этому коду преимуществ видно не будет,
странный посыл.
Ты прогеров за дураков держишь?
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701092
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkyNIN,
я предлагаю наоборот, я буду спринг хвалить, а ты говорить его недостатки.
Слабо?
Это будет взвешенный подход технаря а не менеджера продаж.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701103
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как то я привык к спрингу ;)
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701111
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинКак то я привык к спрингу ;)
я пока боюсь первой дозы
Выпью из копытца и конфигурастом стану.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701124
SkyNIN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подумалось, раз процедурное программирование затронули.

Представим Spring для plain C

Есть набор инфраструктурных функций, нашего "Spring for plain C", которые возвращают указатели на функции определенных, нам известных сигнатур.

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

И описаны правила возврата указателей не на plain C, а в неких текстовых файлах.
Причем, это описание фактически декларативному DSL.
Специализация этого DSL -
описание API не на используемом языке программирования,
описание правил, параметров инициализации
описание порядка и зависимостей инициализации

Это описание позволяет вынести из кода общие свойства взаимодействия подсистем, и их составляющих компонент.
То есть из GRASP: Low Coupling — это принцип, который позволяет распределить обязанности между объектами таким образом, чтобы степень связанности между системами оставалась низкой.
применяется уже к самим законченным подсистемам или функциям, или объектам, а не к коду как таковому.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701125
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ОзверинКак то я привык к спрингу ;)
я пока боюсь первой дозы
Выпью из копытца и конфигурастом стану.

Да это по желанию, можно наводнить проект самодокументируемыми аннотациями ;) Можно простынки xml писать.
Я вот подсел сначала на aspectJ ...теперь перешел с него таки на aop spring`а - очень приятно иметь модульного монстра, в котором можно настроить даже тв ;)
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701129
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkyNIN,

справедливости ради , давайте указывать Spring IoC или о чем мы говорим ;) А то я в последнее время на голове волосами шевелить начал от того, чего в спринге наворотили )
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701150
SkyNIN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Кто такой - прогер? Какова специализация, каков стаж?

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

Petro123Это будет взвешенный подход технаря а не менеджера продаж.
Какого еще менеджера продаж?

Если ты программист на Java то я тебе проще скажу:
Ты либо будешь работать в крупных проектах, и тогда: понимаешь ты, или не понимаешь, нравится тебе, или не нравится, тебя заставят изучать и писать на Spring, "Java EE" или еще каком OSGi
Или ты будешь аутсайдером и троллем на форумах.
Ну или уйдешь в "php".

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

Petro123я предлагаю наоборот, я буду спринг хвалить, а ты говорить его недостатки.
С какой целью мне это делать?
Если бы с понимающим достоинства Spring - то да, полезный был бы обмен мнениями.
А так - зачем мне это нужно?

К тому же, есть два вида спрашивающих
Одни ставят в конце вопроса вопросительный знак.
Другие - восклицательный.

Ты, мне начинает казаться, из вторых. Таким ничего не объяснить.
Их сама жизнь фейсом об тейбл учит.
И тебя научит. Или быть тебе аутсайдером в Java программировании.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701157
SkyNIN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Озверин,

И еще наворотят, не сомневаюсь :)

Как по мне в данном разговоре важнее не виды "Spring"'а, а фундаментальные, главные, идеологические принципы которые заложены в семейство Spring.
А доки там много, если обсуждать ее нюансы на форуме, то ох много буков будет :)
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701159
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озвериночень приятно иметь модульного монстра, в котором можно настроить даже тв ;)
вооот.
В этом корень противоречий.
Одни любят писать универсальность (фреймворк\комбайны\DSL\...).
Другие индивидуальный пошив сапог ДЛЯ заказчика.
Я ко вторым ближе :)
ЗЫ.
Не смогут аннотации транзакций или связей классов обеспечить многообразие Модели (с)
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701168
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkyNIN,
дык не можешь объяснять просто технлогию - не пиши много букф.
Или бери пример с окружающих. Их тут много (пишут плюсы и минусы).
ЗЫ
Не пиши много, давай лучше код.
А то тему закроют.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701178
SkyNIN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Petro123Другие индивидуальный пошив сапог ДЛЯ заказчика.
Когда Зингер выпустил свою первую машинку - белошейки тоже возмущались, и доказывали что ручная то работа...
Таперы в США в 20ых тоже доказывали что звуковое кино - буээээ

Petro123Не пиши много, давай лучше код
А я уже объяснил.
Только ты не программист, а кодэр. Вот тебе и непонятно ничего с моих объяснений.
И код тебе не поможет поднять свой уровень абстракции, на другой уровень. Выше кода на языке программирования.

Petro123А то тему закроют.
И правильно сделают. Не только мной, а и другими даны подсказки на вопрос - "а зачем же Spring на свете?".
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701185
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkyNIN,
всё, завязывай. Спринг - метауровень. Я согласен.
Удачи тебе.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701200
SkyNIN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123, дружочек
сложно объяснить 5летнему почему седеющие мужчины боятся импотенции.

А фейсом об тейбл тебе придется учиться.
Или - поработать содержимым головы.
Либо понимание придет снаружи - либо изнутри.

Клясть же можешь кого угодно. Проблемы то у тебя, а не у меня, или у других успешно применяющих Spring и отбирающих жирные заказы у любителей писать лисапеды.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701236
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkyNIN хорош троллить.
Всё равно как у "забыл ник" у тебя не получается.
Это не семечки на базаре продавать.
забыл никAlexsalog, скорее всего Вам сейчас Spring и не нужен, раз вы не понимаете его преимуществ(это ни в коем случае не попытка троллинга или попытка обидеть). Тотальное навязывание всяких фреймворков весьма пагубно сказывается на людях, которые только начинают осваивать j2EE. Каждому начинающему просто необходимо попробовать написать j2ee приложение на голых jsp/servletах, и именно тогда вы сможете ощутить что дают спринги и т.п.
Действительно, пока количество сервисов\контроллеров не превышает 10 есть соблазн не заморачиваться, но когда вам надоест создавая каждый новый сервис, тратить значительное время на связывание объектов, управление их жизненным циклом, управлением транзакциями, сложностью unit-тестирования, рефакторингом ранее созданных классов, то вы поймете, что гораздо лучше оставить тонны инфраструктурного кода на плечи Spring, а самим заняться бизнес-логикой.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701248
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Так может я тебе пример покажу для спринга, что именно показать только? На каком примере показать идею?
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701252
SkyNIN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

не беда, мне не платят ни за троллинг ни за преподавание вот таким :)
Так что в обоих умениях могу себе позволить быть полным профаном.

Petro123Всё равно как у "забыл ник" у тебя не получается.
А зачем мне дублировать чье-то объяснение?
Раз уже было дано, и человек все равно не понял, попробовать нужно другое.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701258
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTkPetro123,
Так может я тебе пример покажу для спринга, что именно показать только? На каком примере показать идею?
вот на этом.
Я показал, как программируют по старинке без спринг.
12223708
Будет конкретика. Мне флейм неинтересен.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701275
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Будет конкретика. Мне флейм неинтересен.
Только непонятно, зачем ты его разводишь в каждом топике?
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701286
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonidvPetro123Будет конкретика. Мне флейм неинтересен.
Только непонятно, зачем ты его разводишь в каждом топике?
эта тема про архитектуру, тебе в другую - про пагинацию на спринг
______________________________________________
"Не понял" от Лёни 11906276 и чем всё закончилось 11910058
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701292
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Озвериночень приятно иметь модульного монстра, в котором можно настроить даже тв ;)
вооот.
В этом корень противоречий.
Одни любят писать универсальность (фреймворк\комбайны\DSL\...).
Другие индивидуальный пошив сапог ДЛЯ заказчика.
Я ко вторым ближе :)
ЗЫ.
Не смогут аннотации транзакций или связей классов обеспечить многообразие Модели (с)

Скорее ко всем перечисленным, кто - то любит использовать фреймворк, чтобы освободить себя от трудоемкой рутинной низкоуровневой работы ;)
p.s. Я не совсем согласен, что c высказыванием, что низкая связность классов в ООП ухудшает тестирование , кстати ; )Скорее ведь наоборот.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701315
SkyNIN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LeonidvТолько непонятно, зачем ты его разводишь в каждом топике?
А это наверное такой вид ЧСВ.

Другой, что часто встречаю у начинающих - а зачем эти ужасные хиберы? Вот, смотрите, я набросал библиотечку, какая простота и красота.
Говоришь ему - ну-у-у-, это у тебя версия 0.01 пре-бэта iBATIS получилась, а он в ответ - нет! и iBATIS тоже гуано! Вот мой подход перевернет мир!

Такие вот они, гонористые попиратели авторитетов :)
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701318
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озвериннизкая связность классов в ООП
это обширная тема.
Конкретно про связность:
- с одной стороны мы заменяем класс для удобства тестирования
- с другой стороны, при низкой связности (напр. плагины в ИС) - нужно тестировать больше вариантов.
Ведь связность именно для вариантности делают?
- с 3-ей стороны должна быть хорошая поддержка IDE и рантайм.
Мы ведь связи в конфиги выносим.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701324
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Озвериннизкая связность классов в ООП
это обширная тема.
Конкретно про связность:
- с одной стороны мы заменяем класс для удобства тестирования
- с другой стороны, при низкой связности (напр. плагины в ИС) - нужно тестировать больше вариантов.
Ведь связность именно для вариантности делают?
- с 3-ей стороны должна быть хорошая поддержка IDE и рантайм.
Мы ведь связи в конфиги выносим.


Нет, связность понижают в основном именно для тестирования, а спринг используют, чтобы точно все сеттеры при инициализации класса отработали.
Другие варианты: билдер, но он тоже не обеспечить инициализацию
Финализировать поля класса , но тогда тестирование с мокито усложняется.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701325
SkyNIN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123- с 3-ей стороны должна быть хорошая поддержка IDE и рантайм.
SpringSource Tool Suite - не идеален, но много уже умеет.

Другое направление развития средств работы с этим всем хозяйством - Spring Roo
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701328
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkyNINPetro123- с 3-ей стороны должна быть хорошая поддержка IDE и рантайм.
SpringSource Tool Suite - не идеален, но много уже умеет.

Другое направление развития средств работы с этим всем хозяйством - Spring Roo

Spring Roo - это немного не в степь, все таки пока что это кодогенератор, весьма сырой и мало кем используемый по этой причине в коммерческом программировании ;)
StS - кстати бодрый инструмент, но меня по работе подсадили на идею..теперь слезать не охота ;)
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701394
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

конфигурируем объект для работы с MongoDB

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    <bean id="mongo" class="com.mongodb.Mongo">
        <constructor-arg name="host" value="127.0.0.1"/>
    </bean>

    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
        <constructor-arg ref="mongo"/>
        <constructor-arg name="databaseName" value="berkley_db"/>
        <constructor-arg ref="userCredentials"/>
    </bean>

    <bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials">
        <constructor-arg name="username" value="berkley_user"/>
        <constructor-arg name="password" value="1111111"/>
    </bean>



Используем в классе DAO

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@Repository
public class CompanyDAO {

    @Autowired
    MongoOperations mongoOperations;

    public void create(Company company) {
        if (valid(company))
           mongoOperations.insert(company);
    }
}



Вот такой вот Хеллоу ворлд в стиле IoC :)
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701405
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTk,
замечательно.
Если не лень, напиши это без спринга (НЕ для холиваров).
Или я попозже попробую.
спс.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701411
SkyNIN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Озверин,

Да, в целом согласен.

Добавлю только
Как раз вынесение описания связей и инициализации из кода в некий DSL и дает отличный шанс создать инструменты в виде StS, или плагинов к Idea.
Анализатор инфраструктурного Java кода проекта без Spring - куда сложней даже в теории.

Тем же путем идет идут и в Eclipse RCP - для OSGi контейнера Equinox описание можно и рекомендуется задавать во внешних конфигах, которые уже неплохо конфигурируются плагинами же. Причем оставлена и полная динамика - все можно зашить и в Java код.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701417
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Будет билдер и сеттер для поля вместо аннотации @Autowired :)
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701427
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTkPetro123,
Будет билдер и сеттер для поля вместо аннотации @Autowired :)
у меня классов без конструкторов и параметров не бывает.
Если ты об этом.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701454
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Пример в студию :)
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701667
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут уже правильную аналогию приводили с совочком и экскаватором. Обсуждать архитектурные вопросы на уровне приложений в 5 строк неправильно. Да еще строки при этом сравнивать.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701679
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTkПример в студию :)
Да нет проблем :)
Пример 1
====================
Десктоп, Класс SavePosWin сохраняет положение окна owner'a.
Инициализация после создания всех контролов.
Сохранение положения окна при закрытии окна в деструкторе.
Параметры: имя класса через this, True - сохранить, False -
прочитать и установить через this

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
class WinForm {

  конструктор{
  инит всех контролов
  ..............
  SavePosWin.SaveLoadPosition(this_WinControl, True);
  ...........
  }
}


======================
не совсем конструктор, но примера 2-4 разберём.... для 1 класса 2-ой четверти
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701762
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

И как в этом примере, например, получить доступ к сервису, который работает с парочкой DAO? При этом DAO, в зависимости от окружение размещения могут быть разными.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701764
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTkPetro123,

конфигурируем объект для работы с MongoDB

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    <bean id="mongo" class="com.mongodb.Mongo">
        <constructor-arg name="host" value="127.0.0.1"/>
    </bean>

    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
        <constructor-arg ref="mongo"/>
        <constructor-arg name="databaseName" value="berkley_db"/>
        <constructor-arg ref="userCredentials"/>
    </bean>

    <bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials">
        <constructor-arg name="username" value="berkley_user"/>
        <constructor-arg name="password" value="1111111"/>
    </bean>




Используем в классе DAO

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@Repository
public class CompanyDAO {

    @Autowired
    MongoOperations mongoOperations;

    public void create(Company company) {
        if (valid(company))
           mongoOperations.insert(company);
    }
}




Вот такой вот Хеллоу ворлд в стиле IoC :)
вот так выглядит без спринг:
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=925025&msg=12223783
Код: java
1.
2.
3.
4.
5.
6.
7.
    public boolean insert(Person person) throws Exception {
        if (person == null) {
            throw new Exception("empty person");
        }
        Session session = HibernateUtil.getSessionFactory().openSession();
        session.save(person);
    }
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701768
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример 2
====================
Десктоп, Класс FormEditRowGrid модальное окно-форма редактирования
выделенной строки грида, по событию - 2 клика на строке.
Параметры: this для обратного вызова родителя-каллбэк,
CollectionPosition - коллекция объектов с маркером на текущем объекте-строке
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
class WinFormGrid {

  GridMouseDoubleClick{
  formEditRowGrid = new FormEditRowGrid(this, CollectionPosition);
  formEditRowGrid.ShowModal;
  formEditRowGrid = Nil;
  }
}


======================
вот такие ВИ\Use case\прецеденты у программиста.
Уж какие есть :)
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701883
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Код: java
1.
2.
3.
4.
5.
6.
7.
 public boolean insert(Person person) throws Exception {
        if (person == null) {
            throw new Exception("empty person");
        }
        Session session = HibernateUtil.getSessionFactory().openSession();
        session.save(person);
    }



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

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
class WinForm {

  конструктор{
  инит всех контролов
  ..............
  SavePosWin.SaveLoadPosition(this_WinControl, True);
  ...........
  }
}



А что здесь ты пытаешся показать? я не догоняю сорри...
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701940
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTk,
1. Отличается тем что написан без спринга и нет ненужного XML.
Я хотел (вместе с автором) паттерн использования технологии (как напр. на хабре). Без выкриков Windows Must die.

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

3. В Примере 1,2, я ответил ровно на твой вопрос - у меня большинство классов с конструктором и параметрами. Как чёрные ящики с одним входом поведением и выходом.
Поэтому проинжектить не просто.

ЗЫ. Примеры преимуществ IoC\DI несомненно есть .... для _части_ проектов.
______________________________________________
"Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн.
AutoPOI.ru — ГИС-технологии для Oracle
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701948
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=925025&msg=12223783


Т.е. вот такой копипаст в десятке-сотне методов это норм.?
Код: java
1.
2.
3.
4.
        Session session = HibernateUtil.getSessionFactory().openSession();
        ...
        session.flush();
        session.close();


При этом всё прибито к единственной session factory и чтобы перейти на работу, например, с двумя базами нужно весь код перелопатить?
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701954
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ЗЫ. Примеры преимуществ IoC\DI несомненно есть .... для _части_ проектов.

Проблема управления зависимости актуальная для подавляющего большинства проектов размером больше 3х классов.
Ни о какой "_части_" речь идти не может. То что она без DI решается через задний проход, ещё не значит что DI не нужен.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701958
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
однозначно не ответить:
- я это убрал БЕЗ спринга, обычным программированием (это пример прошлого века).
- если разница в 1-2 строки кода "в коде" и избыточный XML, то я выберу программирование, а не конфигуразм.
Т.е. пока не вижу причины.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701962
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczбольшинства проектов размером больше 3х классов.
- управления в рантайме? Зачем?
- помнится VoDA спрашивал - как обозревать конфиги на 3000 строк.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701966
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro1231. Отличается тем что написан без спринга и нет ненужного XML.

Ты как-то непоследователен в теме. Ты против поголовного использования Spring-XML или DI? Для DI существуют и другие легковесные фреймверке. Все инъекции можно и на pure Java организовать.

Petro1232. Результат почти одинаков, т.к. в большинстве фирм таких утилит-фабрик навалом.

Всё такое наследие лишь жалкое подобие того что уже есть в Apache Commons и других распространенных либах. На других платформах все хранят такие наработки. На Java это нафиг никому не нужно. Opensource решения намного более качественные и перекрывают функциональность с лихвой. Поэтому разработчики концентрируются на написании бизнес-логики, которая между проектами не переносится.

Petro1233. В Примере 1,2, я ответил ровно на твой вопрос - у меня большинство классов с конструктором и параметрами. Как чёрные ящики с одним входом поведением и выходом.

Если зависимостями даже через конструктор нельзя управлять, то соовтетственно и полиморфизм стремится у нулю, как в случае с твоими HibernateUtil
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701970
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123- я это убрал БЕЗ спринга, обычным программированием (это пример прошлого века).
- если разница в 1-2 строки кода "в коде" и избыточный XML, то я выберу программирование, а не конфигуразм.

Это всё к вопросу, тебе лично Spring XML не угоден, или DI?
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701985
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123- управления в рантайме? Зачем?

Зависимости в любом случае создаются в рантайме. Поэтому я вопроса не понял. Но они либо создаются извне классов - тем кто отвечает за управление зависимостями. Либо управление зависимостями размазано по всему проекту. Соответсвенно элементами проекта уже сложнее манипулировать, отдельно. Т.к. классы, зачастую, привязаны к конкретным экземплярам зависимостей.
Можно провести аналогию с констркутором LEGO - элементы можно скреплять как угодно. В случае если зависимостями классы управляют сами, то мы имеем несколько монолитных блоков. И чтобы их скрепить в альтернативном варианте, нужно плотно поработать напильником.


Petro123- помнится VoDA спрашивал - как обозревать конфиги на 3000 строк.
Это к теме отношения не имеет. Точно так же как и классы на 20000 строк. (Есть у нас в одном проекте такой)
Spring XML чудесно поддерживает импорты.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37701997
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
- я против и XML и DI поголовного. Поголовное всё плохо. Молиться не люблю, что и написал "забыл ник".
Кстати, логгер тоже инжектить надо?
- я тут читал, что у большинства свои наработки. Может врут.
- управлять кодом в рантайме это круто. Рукой подать до скриптов пользователя и DSL.
Я предпочитаю ТЗ и управлять БЛ.
Хотя твой сабж имеет место быть. Не спорю.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37702004
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЗависимости в любом случае создаются в рантайме
нет. Это модель. Она статична либо в XML либо в коде.
Создаётся в рантайме при загрузке (метамодель), а ОПИСЫВАЕТСЯ в статике-дезигн.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37702014
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczМожно провести аналогию с констркутором LEGO - элементы можно скреплять как угодно. В случае если зависимостями классы управляют сами, то мы имеем несколько монолитных блоков. И чтобы их скрепить в альтернативном варианте, нужно плотно поработать напильником.
конечно.
Можно в ИС бухгалтерия для нового отчёта прислать Jar\dll\...
А можно новый протестированный ОтчётФорма12_DI_IoC.XML.
Короче комбайн для заказчика. Такие тоже есть. Только такие ERP вряд ли имеют отношение к сабжу. imho
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37702017
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123- я против и XML и DI поголовного. Поголовное всё плохо.
Это да. Речь идет о том, что при программирование бизнес-приложений DI очень хорош. Снимается лишняя головная боль "а где мне взять класс" и при необходимости снимается головная боль "а как мне тут это поменять".
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37702025
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonidvСнимается лишняя головная боль "а где мне взять класс" и при необходимости снимается головная боль "а как мне тут это поменять".
вот вся причина. Тему можно закрывать.
- забыл где взять класс и написано так, что проблема "поменять".
Всё выяснили.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37702080
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Я непонимаю твой поток сознания, spring это реализация IoC, мой пример с xml только потому что это настройка для соединения с базой, можно обойтись вообще без xml, можно разделить xml на логические куски(ввиде отдельных xml файлов) чтоб не пугаться 3000 строк. Но речь не о том, а о подходе. Мне реально интересно в каких проектах и с каким ТЗ это принесет зло? Есть пример такой задачи?
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37702106
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTk,
Я говорю вроде очевидные вещи. Мы не секта, и говорить что всегда нужен спринг - глупо. Можно спорить о кол-ве классов или размере проектов (3,5- 500).
imho
Зло он не принесёт. Он принесёт оверхед, который нельзя измерить.

>Есть пример такой задачи?
Здесь их 4:
- нужен ли спринг для инжекции класса логгера
- твой пример0
- мой пример1 и 2
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37702127
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTkPetro123,

Я непонимаю твой поток сознания, spring это реализация IoC, мой пример с xml только потому что это настройка для соединения с базой, можно обойтись вообще без xml, можно разделить xml на логические куски(ввиде отдельных xml файлов) чтоб не пугаться 3000 строк. Но речь не о том, а о подходе. Мне реально интересно в каких проектах и с каким ТЗ это принесет зло? Есть пример такой задачи?

spring это НЕ реализация IoC. На этом надо остановиться ;)
Spring - это фреймворк, один из компонент которого реализует IoC.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37702294
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,

полностю согласен, но как не странно этот компонет один из самых важных при работе со Spring Framework
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37702306
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTkОзверин,
полностю согласен, но как не странно этот компонет один из самых важных при работе со Spring Framework
пока тут речь шла об удобствах программиста (про конфиг классов у заказчика опустим).
Сомнительный критерий для Важности.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703094
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я один ни в одном посте Petro123 так и не понял, что же он конкретно хотел сказать?
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703112
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fixxerЯ один ни в одном посте Petro123 так и не понял, что же он конкретно хотел сказать?
Он считает что Spring XML, как и DI вообще это оверхед на целом ряде проектов. Как он пришел к таким выводам, я не очень понял.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703120
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При этом всё прибито к единственной 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
}
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703135
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fixxerЯ один ни в одном посте Petro123 так и не понял, что же он конкретно хотел сказать?
когда у тебя Java в профиле будет меньше 80% тогда поймёшь.
(Без обид, по доброму)
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703148
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторкогда у тебя Java в профиле будет меньше 80% тогда поймёшь.

Согласен. Java - весьма своеобразный и мир, нельзя на нем зацикливаться.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703157
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪДля того чтобы перейти на работу с двумя базами, надо будет в каждом месте, где используется база, указать, где используется первая база, а где вторая. Для этого в любом случае придется перелопатить весь проект. В примере 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 имеет не самое прямое отношение. Можно тему копипаста дальше не развивать.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703181
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪИспользуйте AspectJ если вам сложно написать такой код. AspectJ не требует никаких спрингов и прочих DI.
некоторым может показаться, что спор о спринге. на самом деле он о проектировании классов. я думаю нашему "программисту" AspectJ нужен еще меньше, чем IOC.

Йуный джавистЪВообще в Java тупой копипаст неизбежен. Пример - фильтрация списка:

В C# код выглядит примерно так:
var newList = oldList.Filter({satisfiesSomeCriteria(_)})


прошу любить и жаловать, commons collections (generic разновидность)
запись менее компактна в силу понятных причин однако
Код: java
1.
2.
3.
4.
5.
6.
CollectionUtils.select(list, new Predicate() {
            @Override
            public boolean evaluate(MyObj input) {
                return false;
            }
        });
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703188
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
я не понял твоей хотелке "поиметь" сразу 2 БД.
Ты в рантайме ПОЛЬЗОВАТЕЛЕМ хочешь менять. Или конфигом аппСервера или как?
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703205
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123я не понял твоей хотелке "поиметь" сразу 2 БД.
Ты в рантайме ПОЛЬЗОВАТЕЛЕМ хочешь менять. Или конфигом аппСервера или как?
Речь не о 2х БД пользователях и пр. Речь о сравнении статических синглтонов (Singleton.getInstance()) и не статических DI.
Есть статический метод getSessionFactory(). Он не обладает полиморфизмом. Соответсвенно проблема - не может быть двух SessionFactory без значительных изменений в коде.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703298
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть статический метод getSessionFactory(). Он не обладает полиморфизмом.

Можно ранее в треде устанавливать ThreadLocal переменную, которую getSessionFactory() потом будет читать. Тогда getSessionFactory() становится полиморфным.
В Common Lisp, например, System.out является полиморфным из коробки посредством использования похожего механизма (dynamic scoping).
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703310
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪМожно ранее в треде устанавливать ThreadLocal переменную, которую getSessionFactory() потом будет читать. Тогда getSessionFactory() становится полиморфным.
В Common Lisp, например, System.out является полиморфным из коробки посредством использования похожего механизма (dynamic scoping).
ThreadLocal подходит только многопоточного сервера. И таким образом вы утверждаете что ThreadLocal лучше чем полноценный полиморфизм?
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703324
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ThreadLocal подходит только многопоточного сервера.

Почему?
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703325
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczСоответсвенно проблема - не может быть двух SessionFactory без значительных изменений в коде
может я ничего не понял. Но на кой мне Две фабрики? Это же синглетон - статика?
Все конфиги-варианты через XML хибера (до загрузки).
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703335
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz

Если хочешь - приводи задачу с одной базой и изменение в требованиях, которое требует вторую базу. Я напишу сначала код, который выполняет исходную задачу, потом отрефакторю под новые требования.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703339
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪBlazkowicz

Если хочешь - приводи задачу с одной базой и изменение в требованиях, которое требует вторую базу. Я напишу сначала код, который выполняет исходную задачу, потом отрефакторю под новые требования.
+1
а то я туплю и не врубился в фичу :)
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703361
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪПочему?
Потому что GUI, например, однопоточный.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703372
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123может я ничего не понял. Но на кой мне Две фабрики?

Например, для работы с разными БД.

Petro123Это же синглетон - статика?

Эта статика у тебя прописана в каждом DAO - глобальная не полиморфная зависимость.

Petro123Все конфиги-варианты через XML хибера (до загрузки).
?
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703376
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪЕсли хочешь - приводи задачу с одной базой и изменение в требованиях, которое требует вторую базу. Я напишу сначала код, который выполняет исходную задачу, потом отрефакторю под новые требования.
Ещё раз. Базы тут не причем. Проблема двух баз это не самоцель. Это следствие использование статического синглтона.
Лучше ты объясни почему статический синглтон лучше чем DI?
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703382
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Базы тут не причем.

Зачем тогда ты о них завел речь?
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703383
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪЯ напишу сначала код, который выполняет исходную задачу, потом отрефакторю под новые требования.
Вооот. В том и дело, что при использовании глобального статического синглтона тебе придется менять все классы, которые его использовали.
А вот в случае с DI тебе нужно поменять только сам синглтон и DI - рефакторинг локализован.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703387
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вооот. В том и дело, что при использовании глобального статического синглтона тебе придется менять все классы, которые его использовали.

Либо не придется, либо их придется менять и в случае со спрингом. Ставь задачу, и я это докажу.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703392
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪБазы тут не причем.

Зачем тогда ты о них завел речь?
Потому что эта проблема возникает при использовании контрпримера Petro123 - HibernateUtil.getSessionFactory() приводит к проблемам не полиморфного getSessionFactory(). Проблема неполиморвного getSessionFactory() это проблема заиметь несколько баз.
Когда тоже самое сделано через DI. Контейнер уже управляет тем как и когда SessionFactory используется в DAO. Соответсвтенно, в зависимости от контекста, можно инжекстить разные SessionFactory без изменения самих DAO.
Постарайтесь следить за темой топика. Больша объяснять не буду.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703399
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪЛибо не придется, либо их придется менять и в случае со спрингом. Ставь задачу, и я это докажу.
В случае с IoC меняется контейнер и синглтон.
В случае со статическим синглтоном, меняется сам синглтон и все методы, которые его используют.
Вы постоянно пытаетесь свести задачу дизайна к частным случаям.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703401
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
я тебя понял.
Только ты ссылаешься на 2 БД \ 2 логгера \ 2 ОРМ'a одновременно в проекте.
А с другой стороны - "это выдуманный пример".
Программист в каждой строке выбирает, какой scope использовать.
От глобальных и статичных, до полиморфизма для "полиморфной логики".
Пример только хромает. IMHO
BlazkowiczПроблема двух баз это не самоцель
тогда самоцель - спринг.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703410
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczВ случае с IoC меняется контейнер и синглтон.
это и есть оверхед.
Менять сверху МетаЯзыком статичный код "на будущее".

Ещё так можно:
Код: java
1.
УниверсальныйОбъект = Утилита.ДайУниверсальныйИнтерфейс(ИмяКонфигаФайла).
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703436
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123это и есть оверхед.

Это не есть оверхед, потому что в твоём подходе любые изменения синглтона затрагивают все классы, которые его используют. У меня более сотни методов в DAO. И при использовании синглтона для SessionFactory, мне пришлось бы их все менять.

Petro123Менять сверху МетаЯзыком статичный код "на будущее".

Ещё так можно:
Код: java
1.
УниверсальныйОбъект = Утилита.ДайУниверсальныйИнтерфейс(ИмяКонфигаФайла).


Это Service Locator. К DI отношения не имеет.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703445
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы постоянно пытаетесь свести задачу дизайна к частным случаям.

Служенье муз не терпит суеты; Прекрасное должно быть величаво.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703455
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Только ты ссылаешься на 2 БД \ 2 логгера \ 2 ОРМ'a одновременно в проекте.
А с другой стороны - "это выдуманный пример".

Использование HibernateUtil.getSessionFactory() это лишь единичный пример. Я показал чем он плох. Готовность проекта к изменениям это важный фактор его устойчивости. У тебя и остальной код на таких же синглтонах?

Petro123Программист в каждой строке выбирает, какой scope использовать.

При чем здесь программист и как он выбирает? Вопрос только в том как именно он этот scope задаёт. Прибивает ли он железно scope к классу, или оставляет возможность использовать класс в любых контекстах по его прямому назначению.

Petro123тогда самоцель - спринг
Когда других аргументов не осталось, можно использовать такой приём из женской логики. Ляпнуть что-то не относящееся к обсуждению.

DI это не оверхед. Управление зависимостями выносится из классов в другие классы. Вот и всё. Соответственно достигается Single responsibility principle.
У тебя DAO имеет две роли
1. Сохраняет объекты.
2. Определяет где и как искать SessionFactory.
С DI остаётся только одна роль.
Оверхеда нет. У тебя локатор в каждом методе. В DI - инжекция в контейнере. Количество кода одинаковое.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703471
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот здесь вы можете найти более внятные аргументы про недостатки 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 предпочительнее.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703494
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123fixxerЯ один ни в одном посте Petro123 так и не понял, что же он конкретно хотел сказать?
когда у тебя Java в профиле будет меньше 80% тогда поймёшь.
(Без обид, по доброму)

Это прием такой сразу на личности переходить?
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703678
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
спс. за обсуждение.
Очень интересно про Роли.
Действительно, мне не нужно чтобы DAO стал ещё глупее и не знал какое хранилище в него воткнут.
Хотя вашу т.з. тоже понимаю.
Было бы очень удобно вместо логгера или ссылки на Хранилище писать:
Код: java
1.
2.
@ТутБудетЛоггер
Метка


Ну просто, чисто, макрос из С++.
Это мы ещё простейший Пример #0 разобрали. Его проще под DI подогнать.
Удачи!
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703682
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fixxerPetro123пропущено...

когда у тебя Java в профиле будет меньше 80% тогда поймёшь.
(Без обид, по доброму)
Это прием такой сразу на личности переходить?
нет. Это скорее исключение из правил. Тем более, я просил не обижаться.
Удачи!
______________________________________________
"Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн.
AutoPOI.ru — ГИС-технологии для Oracle
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703697
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Было бы очень удобно вместо логгера или ссылки на Хранилище писать:
Код: java
1.
2.
@ТутБудетЛоггер
Метка



В чем великая разница между тем, что ты здесь написал и вот этим?:
Код: java
1.
private final static Logger log = LoggerFactory.getLogger(MyClass.getClass)


Можно сказать, что это service locator, но помне так гораздо больше похоже на инжекцию логгера.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703788
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, я тут припоздал, так о чем спор?
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703825
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никТак, я тут припоздал, так о чем спор?
Dependency Injection, оказывается, говно, как и весь Spring.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703846
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonidvPetro123Было бы очень удобно вместо логгера или ссылки на Хранилище писать:
Код: java
1.
2.
@ТутБудетЛоггер
Метка



В чем великая разница между тем, что ты здесь написал и вот этим?:
Код: java
1.
private final static Logger log = LoggerFactory.getLogger(MyClass.getClass)


Можно сказать, что это service locator, но помне так гораздо больше похоже на инжекцию логгера.


Тем, что непонятно, почему в классе должна быть сквозная логика, к классу отношения ну никакого не имеющая ;)
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37703936
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинLeonidvпропущено...

В чем великая разница между тем, что ты здесь написал и вот этим?:
Код: java
1.
private final static Logger log = LoggerFactory.getLogger(MyClass.getClass)


Можно сказать, что это service locator, но помне так гораздо больше похоже на инжекцию логгера.


Тем, что непонятно, почему в классе должна быть сквозная логика, к классу отношения ну никакого не имеющая ;)
То есть огромная разница между синтаксисом @logger и = ?
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37704052
bajork
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В программировании как в шахматах - все зависит от позиции ну и шахматиста ;)

Вот пример простой задачи в которой использования DI/IoC (готового spring) эффективно:
Код: sql
1.
2.
3.
4.
class Spatial {
@Inject LogicManager manager;
List<Spatial> subSpatials;
}


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

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

В том же вебе можно инжектить сервисы в зависимости от пользовательских ролей или ситуаций.

Огромнейший плюс spring это обвязка большого кол-ва всяких фреймворков, которые часто лень осваивать из за плохой документации и особенно ломает, когда приходится выбирать из нескольких, реализующих одну и туже задачу.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37704095
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonidvОзверинпропущено...



Тем, что непонятно, почему в классе должна быть сквозная логика, к классу отношения ну никакого не имеющая ;)
То есть огромная разница между синтаксисом @logger и = ?

А вы как думали?
@logger - аннотация лишь указывает на свойство класса...допустим: логгировать его exception`ы, тогда как наличие статического поля logger - это уже логика класса. Я по-крайней мере так к этому подхожу.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37704130
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bajorkОгромнейший плюс spring это обвязка большого кол-ва всяких фреймворков
этот пункт будет ненадолго, т.к. фреймворки становятся умнее. И эта обвязка, как собаке 5 нога.
Например, спринг+GWT\SmartGWT не такое рядовое занятие.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37704143
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин@logger - аннотация лишь указывает на свойство класса...допустим: логгировать его exception`ы, тогда как наличие статического поля logger - это уже логика класса. Я по-крайней мере так к этому подхожу.
да, причём в виде над_уровня над синтаксисом ЯП - метапрограммирование из разряда препроцессинга.
Или код над кодом.
Я бы сильно обрадовался, если бы этот механизм убрал сеттеры и геттеры (property) или позволял писать компактный код:
Код: java
1.
Хранилище.Подраздел.СвойствоЦвет = clRed;
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37704149
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Озверин@logger - аннотация лишь указывает на свойство класса...допустим: логгировать его exception`ы, тогда как наличие статического поля logger - это уже логика класса. Я по-крайней мере так к этому подхожу.
да, причём в виде над_уровня над синтаксисом ЯП - метапрограммирование из разряда препроцессинга.
Или код над кодом.
Я бы сильно обрадовался, если бы этот механизм убрал сеттеры и геттеры (property) или позволял писать компактный код:
Код: java
1.
Хранилище.Подраздел.СвойствоЦвет = clRed;



Так используй Spring AOP - будет тебе логгер на уровне аннотаций ;)

Насчет Spring+GWT - я глянул.на спринге есть нормальный пример ..вроде ;) все как обычно.
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37704159
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
1. Я сказал что такое аннотация по сути, но я не поддерживаю их для ненужных вещей:
- связи классов - это бизнес-логика
- _часть_ транзакций - это бизнес-логика
Т.е. логгер или Хранилище (хибер-синглетон) это банальные глобальные переменные которые мне не мешают и не мозолят глаза.
Сеттеры мозолят их больше и на БЛ они не влияют.
Т.е. спринг мне пока ничем не помогает
Может не дорос ещё до нирваны.
2. Вопрос только, зачем Smart'у спринг :).
...
Рейтинг: 0 / 0
Дублирую здесь вопрос по Spring
    #37704593
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин@logger - аннотация лишь указывает на свойство класса...допустим: логгировать его exception`ы, тогда как наличие статического поля logger - это уже логика класса. Я по-крайней мере так к этому подхожу.
Интересно. Журналировать exception чего именно указано в примере, о котором речь идет? И я уверен, что изначально petro123 имел ввиду инжекцию логгера.

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


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