powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Какие приемущества использования IoC контейнера?
25 сообщений из 248, страница 3 из 10
Какие приемущества использования IoC контейнера?
    #37565419
XEugene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я совершенно спокоен.
svenomодин объект вызывает метод другогоТрудно с этим не согласиться.
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37565454
VoDA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XEugeneОн "визитит" конкретную реализацию интерфейса ПЕРЕВОЗЧИК, которую клиентский код передал в setBailee и вызывает у него метод ДОСТАВИТЬ(). Заявление, что это "Visitor в чистом виде", было немного провокационным с моей стороны, но это тот случай, когда используют Visitor.Визитор решает строго определенную проблему, а именно:
wikiНад каждым объектом некоторой структуры выполняется одна или более операций. Определить новую операцию, не изменяя классы объектов.

соответственно класс визитор должен иметь (а) интерфейс для того чтобы его можно было прозрачно заменить на другой класс (б) набор методов для посещения КАЖДОГО типа объектов по которым он ходит.

Минимальная конфигурация визитора:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
interface Visitor
{
    void VisitA(A a);
    void VisitB(B b);    // можно сделать вырожденный визитор посещающий только объекты типа А, тогда VisitB может отсутствовать.
} 
 
class Visitor1 implements Visitor
{
    void VisitA(A a) {}
    void VisitB(B b) {}    // можно сделать вырожденный визитор посещающий только объекты типа А, тогда VisitB может отсутствовать.
}



концептуально visit(somethingImportant) и есть суть визитора, без подобного метода паттерн визитор отсутствует.
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37565682
Pavel Kurakin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sql.ru знатный форум :)

Начиная со второй страницы все уже забыли о чем речь.
Напоминаю. ТС спрашивал про преимущества IoC контейнеров. Не что такое IoC, не что такое DI (хотя как по мне одно и то же), не про паттерны с транзакциями.
Это я к тому что советовать поискать по форуму сейчас уже почти бесполезное предложение, а скоро станет бессмысленным. В заголовке одно, а в содержимом другое, ну или наоборот.
Я привел простейший пример(замена реализации без перекомпиляции). Приведите еще.
З.Ы. Мне это то же интересно кстати. :)
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37565731
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel KurakinНапоминаю. ТС спрашивал про преимущества IoC контейнеровАвтору уже популярно объяснили, что это такое и зачем надо, на первой странице.
Pavel KurakinНе что такое IoC, не что такое DI (хотя как по мне одно и то же)Пичаль. Перечитайте первую страницу, поймете, что это не так.
Pavel KurakinЯ привел простейший пример(замена реализации без перекомпиляции). Приведите еще.Главное преимущество использования IoC разжевано уже 100500 раз - это loose coupling.
Ваш пример - не имеет права на жизнь. Ну и что, что без перекомпиляции? Проект то все равно надо пересобирать, а потом передеплоивать. Так что это никакое не преимущество, как максимум - маргетинговый ход. В реальных проектах на это "преимщуество" все болт ложили, ибо не нужно.
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37565785
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот! Ваши рассуждения много проясняют и наталкивают на ряд полезных мыслей! Это хорошо. Кто прав, а кто не очень, ещё придется подразобраться, но всеже польза есть.
Меня вот ещё что волнует. Пока не совсем до конца продумал, как реализовать.
Допустим проект развивается. Есть пару контроллеров и хотелось бы часть функционала вынести в отдельные контроллеры. В результате контроллеров становится всё больше. Ну или как вариант, контроллеры оставляем как есть, но они разростаются в туеву хучу строк кода. Идем дальше. В проекте используется БД. Табличков всё больше и больше становится. Почти на каждую описывается сущность и реализуется 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.
    @Resource(name = "someManager")
    protected SomeManager someManager;
    
    @Resource(name = "sessionRegistry")
    private SessionRegistryImpl sessionRegistry;

    @Autowired
    private SaltSource saltSource;

    @Autowired
    private UserDetailsService userDetailsService;

    @Autowired
    private AccountDao accountDao;

    @Autowired
    private BookDao bookDao;

    @Autowired
    private CommentDao commentDao;

    @Autowired
    private CategoryDao categoryDao;
    
    @Autowired
    private RatingDao ratingDao;


и это не предел!
Так вот мне это не очень нравится. Да и контроллеров может быть много, я упомянал, и в каждом надо повторяться с инжекциями перечисленными выше. Хотелось бы эту инжекция и вообще реализацию логики вынести из контроллера в сервисы или в сервис. Что я должен делать? Я думаю описать класс с аннотацией @Service и заавтоваредить его в нужный мне контроллер. А уже в сервисе заавтоваредить нужные мне DAO. Правильно? В нутри (в сервисе) описать нужные мне методы, которые будут использоваться в контроллере. Какбы отвязываю DAO от контроллеров. Подозреваю, что с ростом проекта и это меня не будет удовлетворять.
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37565827
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот вопрос к теме IoC, да и к Spring, вообще никакого отношения не имеет. У вас проблема - как спроектировать классы. Лучшая книга, которая есть на свете по этой части - Patterns of Enterprise Application Architecture, Martin Fowler.

Читайте, вкуривайте. Ответы на ваши вопросы содержатся в главах про Domain Model (Anemic, Rich) и про MVC
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37565855
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jab, именно так и делай. Вообще, видимо ты пока еще не набил руку в грамотном проектировании классов. Обычно стараются сделать так, чтобы класс имел одну отвественность(Single responsibility метод). То есть по сути твой BookController должен заниматься только действиями, прямо связанными с Book, CommentController с Comment и тд. Обычно в контроллере есть депенденси - некий сервис, иногда два или три, если больше - то надо думать как разбить контроллер на несколько. В этом сервисе опять же есть завсимости допустим от bookDAO и userDAO. Таким образом главный способ бороться со сложностью зависимостей - четко определять границы классов и их отвественности. Если твой сервис инжектит еще один сервис и 5 DAO - то это повод задуматься. Но вообще ты думаешь в правильном направлении.
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37565878
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо, тогда по теме. Про конфигурационные файлы. Всё, что я конфигурирую на данный момент, это в *.xml и в application.properties.
Значит в xml я описываю бины и их взаимосвязи, а в пропертях я описываю источник данных и логин-пароли. Сейчас будет глупый вопрос. Простите. Крутится приложение в TomCat. Задеплоено оно в виде war файла. Как мне менять эти конфигурации налету не раздеплоивая и не пересобирая проект?
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37565898
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник, всё верно! Ответственности начинают четко проявляться с ростом проекта. Собственно это мой первый проект java web, причем не реальный, а тестовый. Мало того! Так уж вышло, что изучение java, я начал практически сразу с javaEE. Вот пытаюсь усложнять и смотреть, в какую сторону надо менять проектирование, чтоб добится максимально гибкости (без фанатизма есно). Спасибо.
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37565911
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто, по началу, было не привычно, что в java любимая тема очень много файлов. Что не класс, то отдельный файл и т.д. Пусть даже класс на пару методов, но отдельным файлом. Причем, зачастую попадаются вообще интересные вещи/подходы! Вот допустим мне надо реализовать метод, который будет генерить префикс к файлу. В качестве префикса будет дата и время. Обычным, привычным способом, меня тянет реализовать это в виде процедуры, а в яве ненавязчиво намекают мол для этого нужно реализовать отдельный класс. Т.е. должен быть обьект, который ответственен за генерацию этого префикса. Это ломает обычное представление о программированиии. Приходится много чего переосмысливать.
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37565916
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никТаким образом главный способ бороться со сложностью зависимостей - четко определять границы классов и их отвественности.
вот DI как раз этому мешает
Слишком легко инжектить связи классов, и на выходе потом лапша.
Когда через конструктор или контекст или событиями, тут над "картинкой" думаешь больше.
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37565971
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, я согласен, но необходимо понимать что DI - это меньшее из зол, и надо понимать как работает инструмент. Когда все в команде понимают как оно работает - то использование DI на больших проектах радикально уменьшает время разработки на больших проектах. Сложности в основном у новичков, которые не набив своих шишек приходят на все готовое. Вот тут jab молодец. Разрабатывая свои проекты он набьет шишки и поймет почему в Java многое устроено так а не иначе.
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37566070
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё вопрос. Как лучше/правильнее грузить бин? Через BeanFactory или через AplicationContext?
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37566075
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jabЕщё вопрос. Как лучше/правильнее грузить бин? Через BeanFactory или через AplicationContext?
Бин правильнее инжектить, а не "грузить".
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37566112
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Остроумно, но всеже как лучше?
ApplicationContext context = new ClassPathXmlApplicationContext(...
context.getBean(...

или

BeanFactory factory = new XmlBeanFactory(new FileSystemResource(...
factory.getBean(...

В чем разница?
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37566149
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
исключая всяческие хаки - два варианта кода, которые ты привел - слишком низкоуровневые и нерекомендуемые к использованию. В типичном приложении ты должен просто описать бины а контейнер сам их загрузит, каким надо способом.
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37566189
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37566251
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЭто замена Dependency Injection на ServiceLocator
Странно. Один, из приведенных мной вариантов, описан там
http://cloud-cuckoo.com.ua/content/spring-dependency-injection-v-deistvii
именно как Dependency Injection.
Таким образом реализована слабая зависимость базового класса с рыцарем, а рыцаря с квестами. Можно конечно и на аннотациях реализовать, но по сути, я думаю, что смысл один и тотже.
Я не понял, что Вы имели ввиду.
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37566271
XEugene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никисключая всяческие хаки - два варианта кода, которые ты привел - слишком низкоуровневые и нерекомендуемые к использованию. В типичном приложении ты должен просто описать бины а контейнер сам их загрузит, каким надо способом.
Причём контейнер при этом проинициализирует именно ApplicationContext.
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37566272
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мое упрощенное понимание DI на этот момент:
Значит описываем мы конфигурации бинов в xml. Пишем какие быны нужны, откуда взять, как будут называться, как будут связаны между собой. На момент запуска приложения Spring создаст экземпляры обьектов в контейнере IoC. Далее, в нашем распоряжении есть ряд команд позволяющих получить экземпляр обьекта из контейнера. При этом, мы получаем экземпляр по имени и можем выполнять его методы описанные в интерфейсе. Т.е. использующий класс, по сути, изначально не знает кто именно и как будет реализовывать нужный ему методы. А вот контейнер как раз и инжектит эту зависимость в процессе выполнения.
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37566275
XEugene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jabЧерез BeanFactory или через AplicationContext?Обычно используется ApplicationContext. Только его не нужно создавать вручную, о чём тут и говорят. А вообще, ApplicationContext расширяет BeanFactory, из чего как бы можно предположить "кто круче")
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37566288
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XEugene, да да. BeanFactory находится/используется в Spring core containter для реализации Dependency Injection. Это какбэ фундоментально.. наверно, а остальное обвес.
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37566307
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XEugeneТолько его не нужно создавать вручную, о чём тут и говорят.Неправда. А как же его тогда создавать то?
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37566347
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jab http://cloud-cuckoo.com.ua/content/spring-dependency-injection-v-deistvii
именно как Dependency Injection.

В данном случае в методе main используется ServiceLocator. Всё остальное - DI. Если вы не понимаете, то не нужно спорить аргументами вида "а тут написано".

jabЯ не понял, что Вы имели ввиду.
Вы main методы часто пишете? А в JEE приложениях?
...
Рейтинг: 0 / 0
Какие приемущества использования IoC контейнера?
    #37566358
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Да он же с EE учить яву начал. :) Что уже звучит забавно. А теперь умничает на тему IoC.
Все же я очень завидую Вашему терпению.
...
Рейтинг: 0 / 0
25 сообщений из 248, страница 3 из 10
Форумы / Java [игнор отключен] [закрыт для гостей] / Какие приемущества использования IoC контейнера?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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