Spring Framework - первые шаги (Конспект шестой) « Java  «  Статьи  «  Главная страница
Главная страница  |  Статьи  |  Персонал  |  Поток сознания  |  Интересно  |  Киев  |  Карта сайта
 
 
 
Java  |  Project Management  |  Web-development  

Spring Framework - первые шаги (Конспект шестой)



Яндекс.Погода

05-02-2008 Использование Constructor и Setter Injection в Spring Framework


 
Конспект шестой : Constructor versus Setter Injection

В одной из предыдущих лекций я познакомил читателя с тем, как паттерн Dependancy Injection (DI) реализован в Spring Framework и продемонстрировал, каким образом устанавливается зависимость между компонентами в файле конфигурации.

Давайте вспомним рисунок:

Графическое изображение - Setter Injection

 
Обратите внимание на выделенную красным цветом пиктограмму (Р) возле поля класса mailService. Она говорит о том, что связь между компонентами (DI) была выполнена через поле класса ((p)roperties), т.е. с использованием метода setMailServiece(). Подобный способ конфигурации по праву называют – Setter Injection (SI).
Думаю, что опытные разработчики догадаются, что существует и альтернативный способ конфигурирования с использованием конструктора – Constructor Injection (CI)
Давайте рассмотрим пример, иллюстрирующий CI:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
 
<bean id="registerFormController"
class="com.personality.examples.spring.ioc.RegisterFormControllerReadyForIoC">
<constructor-arg>
<ref bean="mailService"/>
</constructor-arg>
</bean>
 
<bean id="mailService"
class="com.personality.examples.spring.ioc.SmtpMailService" />
</beans>
Как видите, изменения, произошедшие в файле конфигурации, в нашем случае, не значительные (выделены красным цветом). Графически подобная конфигурация будет выглядеть следующим образом:

Графическое изображе Сonstructor Injection


Из рисунка видно, что связь между компонентами теперь установлена через конструктор, о чем говорит символ (С) в зеленой окружности.
Особый интерес для читателя может представлять конфигурирование с помощью CI компонент, содержащих в параметрах конструктора класса примитивные типы. Представьте себе ситуацию, когда Вам необходимо "поднять" в application context компаненту, котрая отправляет почту в фоновом потоке, например каждые 10 минут, но не более 100 писем за один проход . Вероятнее всего, конструктор такой компоненты будет выглядеть следующим образом - public MailService(int interval, int maxMailCount);

В таком случае в файл конфигурации необходимо будет добавить следующие строки:

<bean id="mailService"
class="com.personality.examples.spring.ioc.SmtpMailService" >


<constructor-arg index="0" value="10"/>
<constructor-arg index="1" value="100"/>
</bean>
Соответственно изменится и графическое представление подобной конфигурации:

Графическое изображение Constructor Injection

 
Более подробно со всеми нюансами конфигурирования с использованием Constructor Injection пользователь может ознакомиться в разделе 3.3.1.1. Constructor Injection :: The Spring Framework - Reference Documentation.

Как видите, для нашего достаточно примитивного примера, нет разницы между использованием Setter Injection и Constructor Injection.

В следующей лекции мы попробуем разобраться, какой же подход является оптимальным и в каких случаях.




Комментарии к статье "Spring Framework - первые шаги (Конспект шестой)" (3)

RedMac: 13-02-2008 18-06
а мне нравиться :Р
постоянный читатель: 11-02-2008 21-14
Ну ты даешь RedMac. Все эти статьи это копии с других сайтов. Подборка совсем не уникальна и некоторые статьи этого сайта совсем не в тему :Р
RedMac: 11-02-2008 13-26
классная подборка -- жду продолжения


Вам есть, что сказать?




  Введите код

1
Веб Приложение на ОСГИ 04-08-2008
Технология OSGi позволяет создавать модульные приложения, которое легко может конфигурироваться путем добавления,удаления или обновления модулей. В данном примеры мы рассмотрим создания простейшего веб-приложения как часть (модуль) другого приложения, основанного на OSGi
2
Spring Framework - первые шаги (Конспект десятый) 05-03-2008
Напомню задачу, с которой может столкнуться любой Java Developer: "В качестве контроллера в нашей подсистеме будет выступать ShoppingCartShowController, поднятый в контексте приложения как singleton. А в качестве модели, будет выступать компонента ShoppingCart, поднятая в контексте сессии".
3
Spring Framework 2.5.2 Released 04-03-2008
Вышел второй апдейт для Spring 2.5, он содержит исправление ошибок найденных в версии 2.5.1 и представляет целый ряд улучшений во фреймворке.
4
Spring Framework - первые шаги (Конспект девятый) 26-02-2008
Теперь давайте усложним ситуацию и представим себе, что первая компонента описана как singleton, а вторая, как prototype. Кроме этого принимаем во внимание, что «singleton» агрегирует в себе «prototype». Что будет происходить в этом случае?
5
Spring Framework - первые шаги (Конспект восьмой : Beans scope) 19-02-2008
Как я и обещал в одной из предыдущих лекций, пришло время поговорить про диапазоны видимости компонент (beans scope).
6
Spring Framework - первые шаги (Конспект седьмой) 12-02-2008
Сегодня мы постараемся разобраться в преимуществах и недостатках, как Constructor Injection (CI), так и Setter Injection (SI).
7
Spring Framework - первые шаги (Конспект шестой) 05-02-2008
Использование Constructor и Setter Injection в Spring Framework
8
Spring Framework - первые шаги (Конспект пятый) 29-01-2008
Существует несколько способов „поднятия“ application context. Для иллюстрации я остановлюсь на простейшем способе, который с успехом можно использовать при разработке юнит тестов.
9
Спрос на Spring разработчиков неуклонно растет 25-01-2008
Спрос на Spring разработчиков неуклонно растет, отмечает в своем блоге Род Джонсон.
10
Spring Framework - первые шаги (Конспект четвертый) 22-01-2008
Теперь, прежде чем перейти к экспериментам с фреймворком, нам осталось разобраться, собственно, каким образом Spring связывает компоненты между собой.
11
Январская конференция JUG Украина :: Кластеры на основе Terracotta 19-01-2008
Последнее собрание украинского JUG прошло в достаточно шикарной обстановке отеля Hyatt Regency. Лично меня презентация, привезенная Джонасом Бонером, посвященная построению кластеров на основе Open Source продукта, разрабатываемого его компанией, Terracotta, очень порадовала.
12
Spring Framework - первые шаги (Конспект третий) 14-01-2008
Прежде чем двигаться дальше и рассматривать следующие немаловажные аспекты Spring Framework, я позволю себе остановиться на мнениях относительно DI (IoC) различных авторитетных разработчиков.
13
Spring Framework – первые шаги (Конспект второй) 08-01-2008
Во время этой лекции нам предстоит разобраться с фундаментальным принципом, положенным в основу работы Spring Framework – Inversion of Control (Ioc). И надо признаться, что это не простая задача, т.к. единства мнения в целесообразности использования этого принципа нет. В начале нам предстоит понять, кто кого инвертирует и кто кого контроллирует.
14
Spring Framework – первые шаги (Конспект первый) 04-01-2008
Spring Framework – явление на Олимпе индустрии разработки программного обеспечения, достойное внимания, хотя бы потому, что Spring смог выйти за рамки Java сообщества и сделать шаг в „святая святых“ - в .Net. Используя опыт, приобретенный мною во время преподавания на тренингах по подготовке Java разработчиков, я постарюсь в цикле статей донести до читателей нашего сайта основные концепции, заложенные в Spring. Создать „конспект лекций“, который поможет Вам сделать свои первые шаги в мир J2EE с использованием Spring Framework.
15
RSS Injection (Часть 2) 31-12-2007
Ни для кого не секрет, что в последнее время RSS каналы стали не только популярным средством продвижения новостных лент, но и эффективным способом обмена информационными потоками между сайтами. В данной статье речь пойдет о том, как реализовать потребность в RSS, используя один из самых популярных фреймворков – Spring.
1
2
»


 
 
 
©2007 Lifein
Использовать материалы www.lifein.com.ua можно, лишь для Интернет-изданий установив гиперссылку на www.lifein.com.ua. Иначе, нарушители будут привлечены к ответственности, согласно Закона Украины "Про авторське право і суміжні права" от 23 декабря 1993 года № 3792-ХІІ статьи 50-53.