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


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