|
|
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
Я совершенно спокоен. svenomодин объект вызывает метод другогоТрудно с этим не согласиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 15:20:52 |
|
||
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
XEugeneОн "визитит" конкретную реализацию интерфейса ПЕРЕВОЗЧИК, которую клиентский код передал в setBailee и вызывает у него метод ДОСТАВИТЬ(). Заявление, что это "Visitor в чистом виде", было немного провокационным с моей стороны, но это тот случай, когда используют Visitor.Визитор решает строго определенную проблему, а именно: wikiНад каждым объектом некоторой структуры выполняется одна или более операций. Определить новую операцию, не изменяя классы объектов. соответственно класс визитор должен иметь (а) интерфейс для того чтобы его можно было прозрачно заменить на другой класс (б) набор методов для посещения КАЖДОГО типа объектов по которым он ходит. Минимальная конфигурация визитора: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. концептуально visit(somethingImportant) и есть суть визитора, без подобного метода паттерн визитор отсутствует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 15:31:54 |
|
||
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
sql.ru знатный форум :) Начиная со второй страницы все уже забыли о чем речь. Напоминаю. ТС спрашивал про преимущества IoC контейнеров. Не что такое IoC, не что такое DI (хотя как по мне одно и то же), не про паттерны с транзакциями. Это я к тому что советовать поискать по форуму сейчас уже почти бесполезное предложение, а скоро станет бессмысленным. В заголовке одно, а в содержимом другое, ну или наоборот. Я привел простейший пример(замена реализации без перекомпиляции). Приведите еще. З.Ы. Мне это то же интересно кстати. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 16:34:24 |
|
||
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
Pavel KurakinНапоминаю. ТС спрашивал про преимущества IoC контейнеровАвтору уже популярно объяснили, что это такое и зачем надо, на первой странице. Pavel KurakinНе что такое IoC, не что такое DI (хотя как по мне одно и то же)Пичаль. Перечитайте первую страницу, поймете, что это не так. Pavel KurakinЯ привел простейший пример(замена реализации без перекомпиляции). Приведите еще.Главное преимущество использования IoC разжевано уже 100500 раз - это loose coupling. Ваш пример - не имеет права на жизнь. Ну и что, что без перекомпиляции? Проект то все равно надо пересобирать, а потом передеплоивать. Так что это никакое не преимущество, как максимум - маргетинговый ход. В реальных проектах на это "преимщуество" все болт ложили, ибо не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 16:49:23 |
|
||
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
Вот! Ваши рассуждения много проясняют и наталкивают на ряд полезных мыслей! Это хорошо. Кто прав, а кто не очень, ещё придется подразобраться, но всеже польза есть. Меня вот ещё что волнует. Пока не совсем до конца продумал, как реализовать. Допустим проект развивается. Есть пару контроллеров и хотелось бы часть функционала вынести в отдельные контроллеры. В результате контроллеров становится всё больше. Ну или как вариант, контроллеры оставляем как есть, но они разростаются в туеву хучу строк кода. Идем дальше. В проекте используется БД. Табличков всё больше и больше становится. Почти на каждую описывается сущность и реализуется DAO. В результате у нас много надо инжектить. Вот пример маинконтроллера: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. и это не предел! Так вот мне это не очень нравится. Да и контроллеров может быть много, я упомянал, и в каждом надо повторяться с инжекциями перечисленными выше. Хотелось бы эту инжекция и вообще реализацию логики вынести из контроллера в сервисы или в сервис. Что я должен делать? Я думаю описать класс с аннотацией @Service и заавтоваредить его в нужный мне контроллер. А уже в сервисе заавтоваредить нужные мне DAO. Правильно? В нутри (в сервисе) описать нужные мне методы, которые будут использоваться в контроллере. Какбы отвязываю DAO от контроллеров. Подозреваю, что с ростом проекта и это меня не будет удовлетворять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 17:06:53 |
|
||
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
Этот вопрос к теме IoC, да и к Spring, вообще никакого отношения не имеет. У вас проблема - как спроектировать классы. Лучшая книга, которая есть на свете по этой части - Patterns of Enterprise Application Architecture, Martin Fowler. Читайте, вкуривайте. Ответы на ваши вопросы содержатся в главах про Domain Model (Anemic, Rich) и про MVC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 17:19:43 |
|
||
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
jab, именно так и делай. Вообще, видимо ты пока еще не набил руку в грамотном проектировании классов. Обычно стараются сделать так, чтобы класс имел одну отвественность(Single responsibility метод). То есть по сути твой BookController должен заниматься только действиями, прямо связанными с Book, CommentController с Comment и тд. Обычно в контроллере есть депенденси - некий сервис, иногда два или три, если больше - то надо думать как разбить контроллер на несколько. В этом сервисе опять же есть завсимости допустим от bookDAO и userDAO. Таким образом главный способ бороться со сложностью зависимостей - четко определять границы классов и их отвественности. Если твой сервис инжектит еще один сервис и 5 DAO - то это повод задуматься. Но вообще ты думаешь в правильном направлении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 17:27:24 |
|
||
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
Хорошо, тогда по теме. Про конфигурационные файлы. Всё, что я конфигурирую на данный момент, это в *.xml и в application.properties. Значит в xml я описываю бины и их взаимосвязи, а в пропертях я описываю источник данных и логин-пароли. Сейчас будет глупый вопрос. Простите. Крутится приложение в TomCat. Задеплоено оно в виде war файла. Как мне менять эти конфигурации налету не раздеплоивая и не пересобирая проект? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 17:34:54 |
|
||
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
забыл ник, всё верно! Ответственности начинают четко проявляться с ростом проекта. Собственно это мой первый проект java web, причем не реальный, а тестовый. Мало того! Так уж вышло, что изучение java, я начал практически сразу с javaEE. Вот пытаюсь усложнять и смотреть, в какую сторону надо менять проектирование, чтоб добится максимально гибкости (без фанатизма есно). Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 17:41:39 |
|
||
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
Просто, по началу, было не привычно, что в java любимая тема очень много файлов. Что не класс, то отдельный файл и т.д. Пусть даже класс на пару методов, но отдельным файлом. Причем, зачастую попадаются вообще интересные вещи/подходы! Вот допустим мне надо реализовать метод, который будет генерить префикс к файлу. В качестве префикса будет дата и время. Обычным, привычным способом, меня тянет реализовать это в виде процедуры, а в яве ненавязчиво намекают мол для этого нужно реализовать отдельный класс. Т.е. должен быть обьект, который ответственен за генерацию этого префикса. Это ломает обычное представление о программированиии. Приходится много чего переосмысливать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 17:47:30 |
|
||
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
забыл никТаким образом главный способ бороться со сложностью зависимостей - четко определять границы классов и их отвественности. вот DI как раз этому мешает Слишком легко инжектить связи классов, и на выходе потом лапша. Когда через конструктор или контекст или событиями, тут над "картинкой" думаешь больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 17:50:22 |
|
||
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
Petro123, я согласен, но необходимо понимать что DI - это меньшее из зол, и надо понимать как работает инструмент. Когда все в команде понимают как оно работает - то использование DI на больших проектах радикально уменьшает время разработки на больших проектах. Сложности в основном у новичков, которые не набив своих шишек приходят на все готовое. Вот тут jab молодец. Разрабатывая свои проекты он набьет шишки и поймет почему в Java многое устроено так а не иначе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 18:16:30 |
|
||
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
Ещё вопрос. Как лучше/правильнее грузить бин? Через BeanFactory или через AplicationContext? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 19:24:59 |
|
||
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
jabЕщё вопрос. Как лучше/правильнее грузить бин? Через BeanFactory или через AplicationContext? Бин правильнее инжектить, а не "грузить". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 19:27:08 |
|
||
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
Остроумно, но всеже как лучше? ApplicationContext context = new ClassPathXmlApplicationContext(... context.getBean(... или BeanFactory factory = new XmlBeanFactory(new FileSystemResource(... factory.getBean(... В чем разница? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 19:46:06 |
|
||
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
исключая всяческие хаки - два варианта кода, которые ты привел - слишком низкоуровневые и нерекомендуемые к использованию. В типичном приложении ты должен просто описать бины а контейнер сам их загрузит, каким надо способом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 19:58:51 |
|
||
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
jabОстроумно, но всеже как лучше? Ну, и при чем здесь остроумие? Это замена Dependency Injection на ServiceLocator. Нужна в очень редких случаях, когда у некого стороннего фреймверка нет итеграции со Spring. И спрингом нельзя инстанциировать классы этого фреймверка. Покажите пример когда это нужно и найдем решение как это обойти. jabApplicationContext context = new ClassPathXmlApplicationContext(... BeanFactory factory = new XmlBeanFactory(new FileSystemResource(... В чем разница? Достаточно открыть JavaDoc и почитать про каждый из указанных классов. И посмотреть какое место они занимают в иерархии. Ну, и обратить внимание на то что XmlBeanFactory уже deprecated. http://static.springsource.org/spring/docs/3.1.0.M1/javadoc-api/org/springframework/beans/factory/xml/XmlBeanFactory.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 20:32:10 |
|
||
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczЭто замена Dependency Injection на ServiceLocator Странно. Один, из приведенных мной вариантов, описан там http://cloud-cuckoo.com.ua/content/spring-dependency-injection-v-deistvii именно как Dependency Injection. Таким образом реализована слабая зависимость базового класса с рыцарем, а рыцаря с квестами. Можно конечно и на аннотациях реализовать, но по сути, я думаю, что смысл один и тотже. Я не понял, что Вы имели ввиду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 21:23:13 |
|
||
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
забыл никисключая всяческие хаки - два варианта кода, которые ты привел - слишком низкоуровневые и нерекомендуемые к использованию. В типичном приложении ты должен просто описать бины а контейнер сам их загрузит, каким надо способом. Причём контейнер при этом проинициализирует именно ApplicationContext. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 21:42:35 |
|
||
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
Мое упрощенное понимание DI на этот момент: Значит описываем мы конфигурации бинов в xml. Пишем какие быны нужны, откуда взять, как будут называться, как будут связаны между собой. На момент запуска приложения Spring создаст экземпляры обьектов в контейнере IoC. Далее, в нашем распоряжении есть ряд команд позволяющих получить экземпляр обьекта из контейнера. При этом, мы получаем экземпляр по имени и можем выполнять его методы описанные в интерфейсе. Т.е. использующий класс, по сути, изначально не знает кто именно и как будет реализовывать нужный ему методы. А вот контейнер как раз и инжектит эту зависимость в процессе выполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 21:42:51 |
|
||
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
jabЧерез BeanFactory или через AplicationContext?Обычно используется ApplicationContext. Только его не нужно создавать вручную, о чём тут и говорят. А вообще, ApplicationContext расширяет BeanFactory, из чего как бы можно предположить "кто круче") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 21:47:08 |
|
||
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
XEugene, да да. BeanFactory находится/используется в Spring core containter для реализации Dependency Injection. Это какбэ фундоментально.. наверно, а остальное обвес. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 21:54:30 |
|
||
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
XEugeneТолько его не нужно создавать вручную, о чём тут и говорят.Неправда. А как же его тогда создавать то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 22:02:42 |
|
||
|
Какие приемущества использования IoC контейнера?
|
|||
|---|---|---|---|
|
#18+
jab http://cloud-cuckoo.com.ua/content/spring-dependency-injection-v-deistvii именно как Dependency Injection. В данном случае в методе main используется ServiceLocator. Всё остальное - DI. Если вы не понимаете, то не нужно спорить аргументами вида "а тут написано". jabЯ не понял, что Вы имели ввиду. Вы main методы часто пишете? А в JEE приложениях? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 22:49:13 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37565827&tid=2132896]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 338ms |
| total: | 491ms |

| 0 / 0 |
