powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Дублирую здесь вопрос по Spring
25 сообщений из 126, страница 4 из 6
Дублирую здесь вопрос по 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
25 сообщений из 126, страница 4 из 6
Форумы / Java [игнор отключен] [закрыт для гостей] / Дублирую здесь вопрос по Spring
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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