Главная » Spring » Связывание компонентов Spring

0

Доводилось ли вам когда-нибудь задерживаться после просмотра фильма, чтобы посмотреть титры? Это невероятно, сколько людей требуется сплотить для создания крупной кинокартины. Помимо очевидных участников – актеров, сценаристов, режиссеров и про- дюсеров, в создании фильма участвуют музыканты, специалисты по спецэффектам, художественные руководители. И это не говоря уже о главном постановщике, звукорежиссере, костюмерах, гримерах, постановщиках трюков, публицистах, первом ассистенте оператора, втором ассистенте оператора, художнике-декораторе, главном осве- тителе и (возможно, самых важных) поварах.

Теперь представьте, на что был бы похож фильм, если бы эти лю- ди не общались друг с другом. Скажем, если бы все они пришли в студию и начали делать свою работу без какой-либо координации. Если режиссер остается на месте и не говорит «камера, съемка», опе- ратор не начинает снимать. Наверное, это все равно не будет иметь значения, так как главная актриса будет оставаться в своем трейлере и свет не будет работать, потому что главный осветитель не будет нанят. Возможно, вам доводилось видеть фильм, где все так и было. Однако большинство фильмов (во всяком случае, хороших) – это результат труда сотен людей, работающих вместе ради общей цели – создания кассового фильма.

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

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

Однако, как было показано в главе 1, традиционные подходы к созданию связей между прикладными объектами (через вызов конструктора или поиск) усложняют программный код, который трудно использовать повторно и тестировать. В лучшем случае эти объекты будут делать больше работы, чем должны. В худшем – они будут сильно связаны между собой и станут слишком сложными для повторного использования и тестирования.

В Spring объекты не отвечают за поиск или создание других объектов, необходимых для выполнения работы. Вместо этого кон- тейнер передает им ссылки на объекты, с которыми они должны взаимодействовать. Компоненту, управляющему заказом, напри- мер, может понадобиться компонент доступа к кредитной карте, однако он не должен создавать компонент доступа к кредитной карте. Ему надо только протянуть руку – и он получит требуемый компонент.

Создание взаимосвязей между прикладными объектами является сущностью технологии внедрения зависимостей (DI) и обычно на- зывается связыванием (wiring). В этой главе мы рассмотрим основы связывания компонентов с помощью фреймворка Spring. Так как DI является одной из основ Spring, этот прием вы будете использо- вать практически постоянно при разработке приложений на основе Spring.

Объявление компонентов

А теперь я приглашаю вас на первый (и, возможно, последний) ежегодный конкурс талантов JavaBean. Я обследовал страну (факти- чески только рабочее пространство IDE) в поисках лучших из ком- понентов JavaBeans, которые будут выступать здесь и в следующих нескольких главах. Мы устроим состязание, а наши судьи поставят оценки. Итак, Spring-программисты, открываем конкурс «Spring Idol».

Для участия в конкурсе нам потребуется несколько исполните- лей, которые определены интерфейсом Performer:

package com.springinaction.springidol;

public  interface  Performer  {

void  perform()  throws  PerformanceException;

}

В конкурсе талантов «Spring Idol» вы встретитесь с несколькими участниками, каждый из которых реализует интерфейс Performer. Но для начала подготовим сцену, рассмотрев базовую конфигурацию Spring.

Источник:   Уоллс К., Spring в действии. – М.: ДМК Пресс, 2013. – 752 с.: ил.

По теме:

  • Комментарии