|
|
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Базы тут не причем. Зачем тогда ты о них завел речь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 17:58:35 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪЯ напишу сначала код, который выполняет исходную задачу, потом отрефакторю под новые требования. Вооот. В том и дело, что при использовании глобального статического синглтона тебе придется менять все классы, которые его использовали. А вот в случае с DI тебе нужно поменять только сам синглтон и DI - рефакторинг локализован. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 17:58:51 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Вооот. В том и дело, что при использовании глобального статического синглтона тебе придется менять все классы, которые его использовали. Либо не придется, либо их придется менять и в случае со спрингом. Ставь задачу, и я это докажу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 18:00:44 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪБазы тут не причем. Зачем тогда ты о них завел речь? Потому что эта проблема возникает при использовании контрпримера Petro123 - HibernateUtil.getSessionFactory() приводит к проблемам не полиморфного getSessionFactory(). Проблема неполиморвного getSessionFactory() это проблема заиметь несколько баз. Когда тоже самое сделано через DI. Контейнер уже управляет тем как и когда SessionFactory используется в DAO. Соответсвтенно, в зависимости от контекста, можно инжекстить разные SessionFactory без изменения самих DAO. Постарайтесь следить за темой топика. Больша объяснять не буду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 18:02:06 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪЛибо не придется, либо их придется менять и в случае со спрингом. Ставь задачу, и я это докажу. В случае с IoC меняется контейнер и синглтон. В случае со статическим синглтоном, меняется сам синглтон и все методы, которые его используют. Вы постоянно пытаетесь свести задачу дизайна к частным случаям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 18:04:02 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, я тебя понял. Только ты ссылаешься на 2 БД \ 2 логгера \ 2 ОРМ'a одновременно в проекте. А с другой стороны - "это выдуманный пример". Программист в каждой строке выбирает, какой scope использовать. От глобальных и статичных, до полиморфизма для "полиморфной логики". Пример только хромает. IMHO BlazkowiczПроблема двух баз это не самоцель тогда самоцель - спринг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 18:04:36 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВ случае с IoC меняется контейнер и синглтон. это и есть оверхед. Менять сверху МетаЯзыком статичный код "на будущее". Ещё так можно: Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 18:08:57 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123это и есть оверхед. Это не есть оверхед, потому что в твоём подходе любые изменения синглтона затрагивают все классы, которые его используют. У меня более сотни методов в DAO. И при использовании синглтона для SessionFactory, мне пришлось бы их все менять. Petro123Менять сверху МетаЯзыком статичный код "на будущее". Ещё так можно: Код: java 1. Это Service Locator. К DI отношения не имеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 18:22:41 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Вы постоянно пытаетесь свести задачу дизайна к частным случаям. Служенье муз не терпит суеты; Прекрасное должно быть величаво. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 18:27:02 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123Только ты ссылаешься на 2 БД \ 2 логгера \ 2 ОРМ'a одновременно в проекте. А с другой стороны - "это выдуманный пример". Использование HibernateUtil.getSessionFactory() это лишь единичный пример. Я показал чем он плох. Готовность проекта к изменениям это важный фактор его устойчивости. У тебя и остальной код на таких же синглтонах? Petro123Программист в каждой строке выбирает, какой scope использовать. При чем здесь программист и как он выбирает? Вопрос только в том как именно он этот scope задаёт. Прибивает ли он железно scope к классу, или оставляет возможность использовать класс в любых контекстах по его прямому назначению. Petro123тогда самоцель - спринг Когда других аргументов не осталось, можно использовать такой приём из женской логики. Ляпнуть что-то не относящееся к обсуждению. DI это не оверхед. Управление зависимостями выносится из классов в другие классы. Вот и всё. Соответственно достигается Single responsibility principle. У тебя DAO имеет две роли 1. Сохраняет объекты. 2. Определяет где и как искать SessionFactory. С DI остаётся только одна роль. Оверхеда нет. У тебя локатор в каждом методе. В DI - инжекция в контейнере. Количество кода одинаковое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 18:30:26 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Вот здесь вы можете найти более внятные аргументы про недостатки DI, чем "оверхед". Можете их использовать. А то что-то своих никак не насобираете. Кроме того что "две базы никогда не нужны". http://stevenharman.net/blog/archive/2009/09/25/prefer-dependency-injection-to-service-location.aspx http://stackoverflow.com/questions/6291331/service-locator-vs-dependency-injection http://martinfowler.com/articles/injection.html Но все сходятся в одном мнении. В подавляющем большинстве случаев DI предпочительнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 18:39:32 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123fixxerЯ один ни в одном посте Petro123 так и не понял, что же он конкретно хотел сказать? когда у тебя Java в профиле будет меньше 80% тогда поймёшь. (Без обид, по доброму) Это прием такой сразу на личности переходить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 18:56:09 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, спс. за обсуждение. Очень интересно про Роли. Действительно, мне не нужно чтобы DAO стал ещё глупее и не знал какое хранилище в него воткнут. Хотя вашу т.з. тоже понимаю. Было бы очень удобно вместо логгера или ссылки на Хранилище писать: Код: java 1. 2. Ну просто, чисто, макрос из С++. Это мы ещё простейший Пример #0 разобрали. Его проще под DI подогнать. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 21:08:05 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
fixxerPetro123пропущено... когда у тебя Java в профиле будет меньше 80% тогда поймёшь. (Без обид, по доброму) Это прием такой сразу на личности переходить? нет. Это скорее исключение из правил. Тем более, я просил не обижаться. Удачи! ______________________________________________ "Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн. AutoPOI.ru — ГИС-технологии для Oracle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 21:09:41 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123Было бы очень удобно вместо логгера или ссылки на Хранилище писать: Код: java 1. 2. В чем великая разница между тем, что ты здесь написал и вот этим?: Код: java 1. Можно сказать, что это service locator, но помне так гораздо больше похоже на инжекцию логгера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 21:26:11 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Так, я тут припоздал, так о чем спор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 22:22:09 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
забыл никТак, я тут припоздал, так о чем спор? Dependency Injection, оказывается, говно, как и весь Spring. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 22:42:36 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
LeonidvPetro123Было бы очень удобно вместо логгера или ссылки на Хранилище писать: Код: java 1. 2. В чем великая разница между тем, что ты здесь написал и вот этим?: Код: java 1. Можно сказать, что это service locator, но помне так гораздо больше похоже на инжекцию логгера. Тем, что непонятно, почему в классе должна быть сквозная логика, к классу отношения ну никакого не имеющая ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 22:55:26 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
ОзверинLeonidvпропущено... В чем великая разница между тем, что ты здесь написал и вот этим?: Код: java 1. Можно сказать, что это service locator, но помне так гораздо больше похоже на инжекцию логгера. Тем, что непонятно, почему в классе должна быть сквозная логика, к классу отношения ну никакого не имеющая ;) То есть огромная разница между синтаксисом @logger и = ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2012, 00:08:08 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
В программировании как в шахматах - все зависит от позиции ну и шахматиста ;) Вот пример простой задачи в которой использования DI/IoC (готового spring) эффективно: Код: sql 1. 2. 3. 4. менеджер логики имеет набор атрибутов и прочих вложенных менеджеров (которые могут наследоваться) влияющих на определенное поведение, к примеру, производительность системы. spring справляется с поставленной задачей на ура: декларативная конфигурация бинов - не нужно придумывать собственный формат конфигурации, (моделирование, валидация, рефлексия) не нужно придумывать механизм управления контекстом, так как спринговый контекст может быть вложенным. В том же вебе можно инжектить сервисы в зависимости от пользовательских ролей или ситуаций. Огромнейший плюс spring это обвязка большого кол-ва всяких фреймворков, которые часто лень осваивать из за плохой документации и особенно ломает, когда приходится выбирать из нескольких, реализующих одну и туже задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2012, 07:13:30 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
LeonidvОзверинпропущено... Тем, что непонятно, почему в классе должна быть сквозная логика, к классу отношения ну никакого не имеющая ;) То есть огромная разница между синтаксисом @logger и = ? А вы как думали? @logger - аннотация лишь указывает на свойство класса...допустим: логгировать его exception`ы, тогда как наличие статического поля logger - это уже логика класса. Я по-крайней мере так к этому подхожу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2012, 08:48:15 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
bajorkОгромнейший плюс spring это обвязка большого кол-ва всяких фреймворков этот пункт будет ненадолго, т.к. фреймворки становятся умнее. И эта обвязка, как собаке 5 нога. Например, спринг+GWT\SmartGWT не такое рядовое занятие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2012, 09:27:57 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Озверин@logger - аннотация лишь указывает на свойство класса...допустим: логгировать его exception`ы, тогда как наличие статического поля logger - это уже логика класса. Я по-крайней мере так к этому подхожу. да, причём в виде над_уровня над синтаксисом ЯП - метапрограммирование из разряда препроцессинга. Или код над кодом. Я бы сильно обрадовался, если бы этот механизм убрал сеттеры и геттеры (property) или позволял писать компактный код: Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2012, 09:34:51 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Petro123Озверин@logger - аннотация лишь указывает на свойство класса...допустим: логгировать его exception`ы, тогда как наличие статического поля logger - это уже логика класса. Я по-крайней мере так к этому подхожу. да, причём в виде над_уровня над синтаксисом ЯП - метапрограммирование из разряда препроцессинга. Или код над кодом. Я бы сильно обрадовался, если бы этот механизм убрал сеттеры и геттеры (property) или позволял писать компактный код: Код: java 1. Так используй Spring AOP - будет тебе логгер на уровне аннотаций ;) Насчет Spring+GWT - я глянул.на спринге есть нормальный пример ..вроде ;) все как обычно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2012, 09:38:32 |
|
||
|
Дублирую здесь вопрос по Spring
|
|||
|---|---|---|---|
|
#18+
Озверин, 1. Я сказал что такое аннотация по сути, но я не поддерживаю их для ненужных вещей: - связи классов - это бизнес-логика - _часть_ транзакций - это бизнес-логика Т.е. логгер или Хранилище (хибер-синглетон) это банальные глобальные переменные которые мне не мешают и не мозолят глаза. Сеттеры мозолят их больше и на БЛ они не влияют. Т.е. спринг мне пока ничем не помогает Может не дорос ещё до нирваны. 2. Вопрос только, зачем Smart'у спринг :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2012, 09:47:56 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37703401&tid=2132331]: |
0ms |
get settings: |
14ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 332ms |
| total: | 488ms |

| 0 / 0 |
