Проекты с доступным для просмотра источником, использующим внедрение зависимостей w / guice? - PullRequest
3 голосов
/ 16 января 2009

Я часто читаю о внедрении зависимостей, и я провел исследование на Google, и я теоретически понимаю, что он может делать и как он работает, но я хотел бы увидеть реальную базу кода, использующую его (Java / guice предпочтительнее) ,

Может кто-нибудь указать мне на проект с открытым исходным кодом, где я могу видеть, как он действительно используется? Я думаю, что просмотр кода и просмотр всей установки показывает мне больше, чем обычные фрагменты во вводных статьях, которые вы найдете в Интернете. Заранее спасибо!

Ответы [ 4 ]

6 голосов
/ 22 августа 2009

Сервер Wave Protocol - мой любимый пример приложения.

3 голосов
/ 16 января 2009

Я немного боролся с этой проблемой. Это настолько абстрактно и просто, что я всегда волновался, что «делаю это неправильно».

Я использовал его в основном проекте, который зависит от других проектов, потому что модуль Guice, который устанавливает привязки, был частью основного проекта.

Я наконец понял, что библиотеки должны сами поставлять модули. В этот момент вы можете зависеть только от экземпляра модуля (не от конкретного) и от интерфейсов, которые с ним связаны.

Сделав это на шаг лучше, вы можете использовать новый механизм ServiceLoader в Java 6 для автоматического поиска и установки всех модулей Guice, доступных на пути к классам. Затем вы можете поменять зависимости, просто изменив путь к классу (db-real.jar или db-mock.jar).

1 голос
/ 18 января 2009

Я понимаю, что вы находитесь на Java-земле, но в пространстве .NET есть несколько приложений с открытым исходным кодом, написанных с использованием инверсии контейнера управления. Проверьте CodeCampServer , в котором модуль пользовательского интерфейса не имеет ссылки на модуль разрешения зависимостей. Существует HttpModule, который делает эту работу. (HttpModule - это просто внешняя библиотека, которую можно подключить, которая обрабатывает события в ASP.NET, в CodeCampServer проект пользовательского интерфейса загружает этот DependencyRegistrarModule во время выполнения, без каких-либо ссылок на него во время компиляции.)

0 голосов
/ 16 января 2009

Я думаю, что внедрение зависимостей может исчезнуть из поля зрения при правильном использовании, это будет просто способ инициализации / подключения вашего приложения - если оно выглядит более навороченным, чем то, что вы, вероятно, смотрите на дополнительные возможности платформы в руки, а не на инъекции зависимости голых костей.

Редактировать: я бы порекомендовал начать использовать его вместо того, чтобы пытаться найти примеры, а затем возвращаться и публиковать здесь вопросы, если вы не можете заставить вещи работать так, как вам кажется: -)

...