Главная » Spring » Обзор возможностей Spring

0

Как вы уже знаете, основной целью фреймворка Spring Framework является упрощение разработки корпоративных приложений на языке Java за счет использования приемов внедрения зависимо- стей, аспектно-ориентированного программирования и устранения необходимости писать шаблонный программный код. Даже если бы возможности фреймворка Spring ограничивались этим набором, его уже стоило бы использовать. Но в Spring заложены гораздо более широкие возможности, чем видно на поверхности.

При работе с фреймворком Spring Framework можно обнаружить еще несколько скрытых путей, упрощающих разработку на языке Java. Однако за пределами Spring Framework существует гигантская

экосистема проектов, построенных на базе основного фреймворка и расширяющих возможность применения Spring на такие области, как веб-службы, OSGi, Flash и даже .NET.

Для начала попробуем разложить основной фреймворк Spring Framework на составные части, чтобы посмотреть, что имеется в на- шем распоряжении. А затем расширим наш кругозор и познакомим- ся с другими элементами в пухлом портфеле Spring.

Модули Spring

Фреймворк Spring состоит из нескольких модулей. После загруз- ки и распаковки архива с дистрибутивом Spring Framework можно обнаружить 20 различных JAR-файлов, как показано на рис. 1.6.

Рис. 1.6. 20 JAR-файлов,

входящих в состав дистрибутива Spring Framework

20 JAR-файлов, составляющих Spring, распределяются по шести функциональным категориям, как показано на рис. 1.7.

Рис. 1.7. Фреймворк Spring Framework состоит из модулей, подразделяющихся на шесть категорий

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

Рассмотрим все модули Spring по отдельности, чтобы увидеть, как они вписываются в общую архитектуру фреймворка.

Основной контейнер Spring

Центральное положение в фреймворке Spring занимает контей- нер, управляющий процессом создания и настройки компонентов приложения. Этот модуль содержит фабрику компонентов, обеспе- чивающую внедрение зависимостей. На фабрике компонентов по- коятся несколько реализаций контекста приложения Spring, каждый из которых предоставляет различные способы конфигурирования Spring.

В дополнение к фабрике  компонентов  и контексту  приложения

этот модуль также предоставляет несколько корпоративных служб,

таких как электронная почта, доступ к JNDI, интеграция с EJB и выполнение заданий по расписанию.

Как показано на рис. 1.7, все модули Spring основаны на реали- зации основного контейнера. Эти классы неявно используются на этапе настройки приложения. Модули основного контейнера будут обсуждаться на протяжении всей книги, начиная с главы 2, где де- тально будет рассматриваться прием внедрения зависимостей.

Модуль AOP

Фреймворк Spring обеспечивает богатую поддержку аспектно- ориентированного программирования в своем модуле AOP. Данный модуль служит основой при разработке аспектов в приложении, построенном на основе Spring. Как и DI, AOP способствует ослаб- лению связей между прикладными объектами. Однако поддержка AOP позволяет отделять аспекты приложения (такие как транзак- ции и безопасность) от объектов, к которым они применяются. Бо- лее подробно поддержка AOP будет рассматриваться в главе 5.

Доступ к данным и интеграция

Работа с JDBC зачастую сводится к обширному использованию шаблонного кода, который устанавливает соединение, создает SQL- запрос, обрабатывает результаты запроса, а затем закрывает соеди- нение. Модуль поддержки JDBC объектов доступа к данным (Data Access Objects, DAO) в Spring абстрагирует шаблонный код и по- зволяет сохранить простым и прозрачным программный код, реа- лизующий операции с базами данных, а также предотвратить проб- лемы, возникающие в результате ошибки освобождения ресурсов. Этот модуль также образует слой важных исключений, основанных на сообщениях об ошибках, посылаемых некоторыми серверами баз данных. Благодаря этому вам больше не придется расшифровывать непонятные сообщения об ошибках SQL!

Для тех, кто предпочитает использовать инструменты объектно-

реляционного отображения (Object-Relational Mapping, ORM) по- верх JDBC, фреймворк Spring предоставляет модуль ORM. Под- держка ORM в Spring основана на поддержке DAO, обеспечивающей удобный способ создания объектов доступа к данным для некоторых ORM-решений. Фреймворк Spring не пытается реализовать свое собственное ORM-решение, а просто предоставляет рычаги управ- ления некоторыми популярными фреймворками ORM, включая Hibernate, Java Persistence API, Java Data Objects и iBATIS SQL

Maps. Механизм управления транзакциями в Spring поддерживает все эти фреймворки ORM наряду с JDBC.

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

Этот модуль также включает абстракцию интерфейса Java до- ступа к службам обмена сообщениями (Java Message Service, JMS) для обеспечения асинхронных взаимодействий с другими при- ложениями посредством обмена сообщениями. Начиная с версии Spring 3.0, этот модуль еще включает механизм отображения объек- тов в формат XML, который прежде являлся частью проекта Spring Web Services.

Кроме того, данный модуль использует модуль AOP для предо- ставления службы управления транзакциями в приложении на ос- нове фреймворка Spring. Поддержка транзакций подробно будет рассматриваться в главе 6.

Веб и удаленные взаимодействия

Парадигма модель–представление–контроллер (Model–View– Controller, MVC) часто используется при создании веб-приложений, в которых пользовательский интерфейс отделен от логики работы приложения. Язык Java не испытывает недостатка в фреймворках MVC, благодаря поддержке Apache Struts, JSF, WebWork и Tapestry, являющихся наиболее популярными реализациями MVC.

Несмотря на то что фреймворк Spring легко интегрируется с раз- личными популярными фреймворками MVC, его модуль поддержки веб- и удаленных взаимодействий включает собственный фрейм- ворк MVC, который использует приемы создания слабо связанных объектов в веб-слое приложения. Этот фреймворк имеет две раз- новидности: фреймворк на основе сервлетов, для создания обычных веб-приложений, и фреймворк на основе портлетов, для создания приложений на основе API Java-портлетов.

В дополнение к поддержке создания пользовательского ин- терфейса в веб-приложениях этот модуль также предоставляет поддержку удаленных взаимодействий для создания приложений, взаимодействующих с другими приложениями. В состав средств удаленных взаимодействий в Spring  входят механизм вызова удаленных методов (Remote Method Invocation, RMI), Hessian, Burlap, JAX-WS и собственный механизм вызова через протокол HTTP.

Подробнее фреймворк Spring MVC будет рассматриваться в гла- ве 7. А в главе 10 мы познакомимся с организацией удаленных вза- имодействий.

Тестирование

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

Внутри этого модуля можно обнаружить коллекцию  фиктивных

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

Первый опыт использования модуля тестирования мы получим в главе 5. А затем, в главах 6 и 7, подкрепим полученные знания практикой тестирования операций доступа к данным и транзакций.

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

По теме:

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