Spring Framework
Логотип программы Spring Framework
Тип Application framework
Разработчик VMware
Написана на Java, Kotlin и Groovy
Операционная система Кроссплатформенное ПО
Первый выпуск 16 ноября 2002
Аппаратная платформа Java
Последняя версия
Репозиторий github.com/spring-projec…
Состояние Active
Лицензия Apache License 2.0
Сайт spring.io
Логотип Викисклада Медиафайлы на Викискладе

Spring Framework (или коротко Spring) — универсальный фреймворк с открытым исходным кодом для Java-платформы. Также существует форк для платформы .NET Framework, названный Spring.NET[2].

Первая версия была написана Родом Джонсоном, который впервые опубликовал её вместе с изданием своей книги «Expert One-on-One Java EE Design and Development»[3] (Wrox Press, октябрь 2002 года).

Фреймворк был впервые выпущен под лицензией Apache 2.0 license в июне 2003 года. Первая стабильная версия 1.0 была выпущена в марте 2004. Spring 2.0 был выпущен в октябре 2006, Spring 2.5 — в ноябре 2007, Spring 3.0 в декабре 2009, и Spring 3.1 в декабре 2011. Текущая версия — 6.0.x.

Несмотря на то, что Spring не обеспечивал какую-либо конкретную модель программирования, он стал широко распространённым в Java-сообществе главным образом как альтернатива и замена модели Enterprise JavaBeans. Spring предоставляет бо́льшую свободу Java-разработчикам в проектировании; кроме того, он предоставляет хорошо документированные и лёгкие в использовании средства решения проблем, возникающих при создании приложений корпоративного масштаба.

Между тем, особенности ядра Spring применимы в любом Java-приложении, и существует множество расширений и усовершенствований для построения веб-приложений на Java Enterprise платформе. По этим причинам Spring приобрёл большую популярность и признаётся разработчиками как стратегически важный фреймворк.

Введение

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

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

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

Модули

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

Inversion of Control

Центральной частью Spring является контейнер Inversion of Control, который предоставляет средства конфигурирования и управления объектами Java с помощью рефлексии. Контейнер отвечает за управление жизненным циклом объекта: создание объектов, вызов методов инициализации и конфигурирование объектов путём связывания их между собой.

Объекты, создаваемые контейнером, также называются управляемыми объектами (beans). Обычно конфигурирование контейнера осуществляется путём внедрения аннотаций (начиная с 5 версии J2SE), но также есть возможность "по старинке" загрузить XML-файлы, содержащие определение bean’ов и предоставляющие информацию, необходимую для создания bean’ов.

Объекты могут быть получены одним из двух способов:

MVC

Spring имеет собственную MVC-платформу веб-приложений, которая не была первоначально запланирована. Разработчики Spring решили написать её по причине того что фреймворк Apache Struts, а также другие доступные на тот момент веб-фреймворки имели неудачную архитектуру. В частности, по их мнению, было недостаточным разделение между слоями представления и обработки запросов, а также между слоем обработки запросов и моделью[4].

Класс DispatcherServlet является основным контроллером фреймворка и отвечает за делегирование управления различным интерфейсам, на всех этапах выполнения HTTP-запроса. Об этих интерфейсах следует сказать более подробно.

Как и Struts, Spring MVC является фреймворком, ориентированным на запросы. В нем определены стратегические интерфейсы для всех функций современной запросно-ориентированной системы. Цель каждого интерфейса — быть простым и ясным, чтобы пользователям было легко его заново имплементировать, если они того пожелают. MVC прокладывает путь к более чистому front-end-коду. Все интерфейсы тесно связаны с Servlet API. Эта связь рассматривается некоторыми как неспособность разработчиков Spring предложить для веб-приложений абстракцию более высокого уровня. Однако эта связь оставляет особенности Servlet API доступными для разработчиков, облегчая все же работу с ним. Наиболее важные интерфейсы, определенные Spring MVC, перечислены ниже:

Spring MVC предоставляет разработчику следующие возможности:

В веб-приложениях можно использовать различные части Spring, а не только Spring MVC.

Доступ к данным

Spring предоставляет свой слой доступа к базам данных посредством JDBC. Кроме того, он поддерживает все популярные ORM: Hibernate, JPA, JDO, EclipseLink, iBatis, Apache OJB, Apache Cayenne и т. п..

Для всех этих фреймворков, Spring предоставляет такие особенности:

Управление транзакциями

Фреймворк управления транзакциями в Spring привносит механизм абстракций для платформы Java. Основные возможности этих абстракций:

«Соглашение прежде конфигурации» в разработке приложения

Spring Roo — фреймворк, поддерживающий принцип «соглашение прежде конфигурации» для быстрого создания бизнес-приложений.

Может использоваться со:

Интеграция

Spring Integration — фреймворк для JEE, который предоставляет функции, необходимые для отправки сообщений или для построения событийно-ориентированной архитектуры…

Spring Hadoop

29 февраля 2012 года VMware выпустил продукт интеграции Spring с Apache Hadoop. Новый фреймворк Spring Hadoop[5] комбинирует возможности Spring Framework с возможностью Hadoop, позволяющей разработчикам создавать приложения, которые масштабируются от одного сервера до тысяч и обеспечивают высокую доступность через программное обеспечение, а не аппаратные средства. Интегрируя Hadoop Framework, основанную на Java, open-source платформу для распределенной обработки больших наборов данных в кластерах компьютеров, использующую простую модель программирования, с фреймворком Spring для разработки приложений Java/JEE, VMware создал проект, который полностью попадает под «зонтик» Spring Data[6][7].

Среди возможностей нового фреймворка:

Примечания

  1. Release v6.1.4
  2. Spring.NET Application Framework. Дата обращения: 19 мая 2010. Архивировано 2 апреля 2006 года.
  3. Expert One-on-One J2EE Design and Development Архивная копия от 7 мая 2012 на Wayback Machine (англ.)
  4. Johnson, Expert One-on-One J2EE Design and Development, Ch. 12. et al.
  5. Spring Hadoop. Дата обращения: 24 сентября 2013. Архивировано 28 сентября 2013 года.
  6. Spring Data. Дата обращения: 24 сентября 2013. Архивировано 27 сентября 2013 года.
  7. 1 2 Spring Hadoop: новый фреймворк для Java-разработчиков под «зонтиком» Spring Data Архивировано 27 сентября 2013 года.. High Load Web Архивная копия от 4 апреля 2012 на Wayback Machine.

Литература

Ссылки