Шаблон внедрения зависимостей упрощает код приложения и повышает гибкость конфигурации, откладывая настройку компонента и сборку в контейнер. Ресин вызывает сеттеры на настроенных объектах, чтобы собрать зависимости ресурса.
демонстрация
Внедрение зависимости - это термин, используемый для описания разделения между реализацией объекта и конструкцией объекта, от которого он зависит, и способностью контейнера, такого как Resin, разрешать зависимость.
Поскольку контейнер создает и собирает зависимости, код становится проще, а конфигурация более гибкой. Например, легко заменить реализации теста в качестве зависимых ресурсов.
Пример MovieFinder для этого урока взят от Мартина Фаулера Внедрение зависимости статья.
Более подробную информацию о конфигурации смолы можно найти на конфигурация в стиле бобов стр.

Шаблон инжектора зависимостей можно также назвать шаблоном сборки, поскольку он напоминает сборочную линию по производству автомобилей.
- Детали являются взаимозаменяемыми компонентами, такими как колеса. Части также могут быть собраны как двигатель в автомобиле.
- Детали прикреплены к шасси как рама автомобиля с двигателем.
- Реестр содержит частично законченные детали, такие как заводская конвейерная лента.
- Ассемблер предоставляет Реестр и собирает шасси и детали в законченный ресурс.
Некоторые важные моменты:
- Код приложения (шасси и детали) не зависит от ассемблера.
- Части являются взаимозаменяемыми.
- Код должен выбрать шаблон сборки, например, Setter Injection.
Поскольку Ассемблер не зависит от кода, проект может изменить Ассемблер с Spring на Resin без изменений кода. Таким образом, использование шаблона внедрения ассемблера / зависимости снижает зависимость от платформы. При смене ассемблера меняется только конфигурация, а не код.
Во время тестирования тестовый набор или жгут играет роль Ассемблера, упрощая набор тестов и гарантируя, что тестируемый код является рабочим кодом. Тест может создать тестовую реализацию Части, например TestMovieFinder, для тестирования.
В некоторых случаях код приложения может предоставить свой собственный метод assembly () для ситуаций, когда контейнер не способен собрать компоненты. Например, MovieServlet может создать метод assembly (), который извлекает MovieLocator из JNDI.
Единственный код, специфичный для шаблона внедрения на основе установки, - это добавление метода установки для зависимого ресурса. Во многих приложениях этот установщик уже будет написан, поэтому никакого дополнительного кода не потребуется.
В зависимости от архитектуры приложения для зависимого ресурса можно использовать интерфейс или класс. В этом примере используются оба: MovieLister использует зависимый интерфейс MovieFinder, а MovieServlet использует зависимый класс MovieListener.
import javax.webbeans.Component; импорт javax.webbeans.In; @Component открытый класс MovieListener {@In private MovieFinder _finder; ...}
Настройка службы MovieFinder
<bean class = "example.MovieFinderImpl"> <init> <movie Director = "Джексон" title = "Братство Кольца" /> <movie Director = "Джексон" title = "Две башни" /> <режиссер фильма = "Лукас" title = "Звездные войны" /> <movie Director = "Гиллиам" title = "Бразилия" /> </ init> </ bean>
Шаблон внедрения зависимостей так же полезен для конфигурации сервлета, как и для ресурсов. Этот пример делает MovieLister параметром сервлета. Смола-web.xml настроит сервлет с соответствующим MovieLister
Преимущества использования внедрения зависимостей для сервлета такие же, как и для ресурса:
- Код сервлета становится проще.
- Сервлет больше не зависит от JNDI.
- Сервлет проще тестировать, настроив его на тестовые версии MovieListener.
Настройка MovieServlet
импорт javax.webbeans.In; открытый класс MovieServlet расширяет HttpServlet {// Добавление службы MovieLister @In private MovieLister _movieLister; ...}
демонстрация
Copyright © 1998-2015 Caucho Technology, Inc. Все права защищены.Resin ® является зарегистрированным товарным знаком.Quercustm и Hessiantm являются торговыми марками Caucho Technology.Оптимизированный для облака Resin Server - это сертифицированный Java EE сервер приложений Java, веб-сервер и сервер распределенного кэша (Memcached).
Resin поддерживает ведущие мировые компании, которым требуется надежность и высокопроизводительные веб-приложения, в том числе SalesForce.com, CNET, DZone и многие другие.
Главная Компания документы
сервер приложений