Введение в Spring

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

Spring поддерживает несколько языков: Java, Kotlin и Groovy.

Мы используем много инструментов, которые поставляются с Spring framework, и пожинаем плоды того, что у нас есть много готовых решений, и нам не нужно беспокоиться о написании тонны дополнительного кода — так что это действительно экономит наше время и энергию.

Разработчики Spring сделали его модульным, чтобы пользователи смогли использовать только те функции, которые им действительно нужны.

Рассмотрим основные компоненты Spring и выясним их возможности.

Spring Framework

Spring Framework (Spring Core или просто Spring) — фреймворк с открытым исходным кодом, являющийся обязательным для работы других модулей Spring, которые мы рассмотрим далее.

Основные возможности:

  • Внедрение зависимостей, события, ресурсы, проверка и связывание данных, преобразование типов, SpEL, AOP
  • Инструменты тестирования: mock-объекты, TestContext, Spring MVC Test, WebTestClient
  • Осуществление транзакций, поддержка DAO, JDBC, ORM, Marshalling XML
  • Поддержка интеграций: удалённое взаимодействие, JMS, JCA, JMX, планирование, кеш

По сути, Spring Framework представляет собой просто контейнер внедрения зависимостей, с несколькими удобными слоями (например: доступ к базе данных, прокси, аспектно-ориентированное программирование, RPC, веб-инфраструктура MVC). Это все позволяет вам быстрее и удобнее создавать Java-приложения.

Spring Environment

Spring Environment — это интерфейс, API.

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

В простейшем виде эти свойства находятся в файлах .properties, и их может быть много:

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

Spring пытается упростить вам регистрацию и автоматический поиск свойств во всех этих различных источниках с помощью абстракции environment

Spring Boot

Spring Boot позволяет легко создавать автономные, производственные приложения на основе Spring, которые вы можете "просто запустить".

Возможности:

  • Создание полноценных Spring приложений
  • Встроенный Tomcat или Jetty (не требуется установки WAR файлов)
  • Обеспечивает «начальные» POMs для упрощения вашей Maven конфигурации
  • Автоматическая конфигурация Spring когда это возможно
  • Метрика, мониторинг состояниям и расширенная конфигурация
  • Отсутствие необходимости генерации кода и написания XML конфигурации

Spring Data

Упрощает использование таких технологий доступа к данным, как реляционные и нереляционные СУБД, map-reduce фреймворки и облачные сервисы. Spring Data состоит из подпроектов для конкретной СУБД.

Возможности:

  • Настраиваемое отображение сущностей в БД на Java-объекты
  • Создание динамических запросов в базу данных через сигнатуру метода интерфейса репозитория
  • Базовые классы для различных задач
  • Прозрачный аудит объектов
  • Возможность интегрировать собственный код репозитория
  • Простая интеграция со Spring через JavaConfig, а также кастомных пространств имён XML
  • Расширенная интеграция с контроллерами Spring MVC

Spring Web MVC

Spring Web MVC, также известный как Spring MVC, является веб-средой Spring. Это позволяет создавать все, что связано с сетью, от небольших веб-сайтов до сложных веб-сервисов.

Spring MVC поддерживает множество типов для различных технологий отображения страницы. В том числе — JSP, HTML, PDF, Excel, XML, Velocity templates, XSLT, JSON, каналы Atom и RSS, JasperReports.

Spring XD

Spring XD представляет собой единую, распределенную и масштабируемую систему приема данных, аналитики в режиме реального времени, пакетной обработки и экспорта данных. Цель проекта заключается в упрощении разработки больших приложений данных.

Big Data приложения имеют много общих характеристик с приложениями бизнес-интеграции и пакетной обработки данных. Spring предлагает проверенные решения для построения приложений уже более 6 лет через Spring Integration и Spring Batch проекты. Spring XD основана на этих проектах и предлагает легковесную среду выполнения, которая легко настраивается и собирается с помощью простого DSL.

Возможности:

  • Высокая пропускная способность распределения данных из различных источников в хранилища большого объема информации, таких как HDFS и Splunk
  • Аналитика в режиме реального времени, например, сбор метрик и подсчет значений
  • Управление рабочим процессом через пакетные задачи. Задачи сочетают в себе взаимодействие со стандартными бизнес-системами(например, RDBMS), а также Hadoop операциями
  • Высокая пропускная способность передачи данных на экспорт, например, из HDFS в RDBMS или NoSQL СУБД

Spring Integration

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

Integration позволяет взаимодействовать с внешними системами с помощью адаптеров каналов и шлюзов. Адаптеры каналов используются для односторонней интеграции (отправка или получение), а шлюзы — для сценариев запроса / ответа (входящего или исходящего).

Возможности:

  • Интеграция с внешними системами ReST/HTTP/FTP/SFTP/Twitter/WebServices (SOAP and ReST)TCP и множество других
  • Расширенная поддержка JMX
  • MBeans-компоненты

Spring Batch

Spring Batch — платформа для разработки пакетных приложений. Spring Batch подойдёт как для простых, так и для более сложных проектов — платформа легко масштабируется и может обрабатывать большие объёмы информации.

Возможности:

  • Управление транзакциями
  • Обработка по частям
  • Декларативный I/O
  • Web-интерфейс панели администрирования

Spring Security

Spring Security — среда аутентификации, авторизации и контроля доступа. Это стандартный фреймворк, который используется для защиты приложений на основе Spring.

Spring Security предоставляет базовые функции безопасности, которые можно легко расширить для ваших собственных нужд.

Возможности:

  • Аутентификация и авторизация пользователей
  • Защита от атак, таких как фиксация сессии, кликджекинг, подделка межсайтовых запросов и так далее
  • Возможность интеграции с Servlet API
  • Опционально подключаемый модуль Spring Web MVC

Spring Cloud

Со Spring Cloud вы сможете легко и быстро создавать шаблоны в распределённых системах. Из примеров таких шаблонов: управление конфигурацией, обнаружение сервисов, интеллектуальная маршрутизация, микропрокси, одноразовые токены и многое другое.

Шаблоны, созданные с помощью Spring Cloud, будут хорошо работать в любой распределённой среде, включая ваш собственный ноутбук, центры обработки данных и PaaS-платформы, такие как Cloud Foundry.

Spring Cloud также состоит из множества подпроектов для разных целей. Так, Spring Cloud Azure интегрирует Spring со службами Azure, Spring Cloud Stream используется для создания управляемых событиями микросервисов (event-driven microservices) и так далее.

Возможности:

  • Распределённая / версионная конфигурация
  • Регистрация и обнаружение сервисов
  • Маршрутизация
  • Связь между сервисами (service-to-service calls)
  • Балансировка нагрузки
  • Выбор лидера и состояние кластера
  • Распределённый обмен сообщениями

Spring Cloud Data Flow

Spring Cloud Data Flow нужен приложениям, в которых используется потоковая передача и пакетная обработка данных.

Фреймворк поддерживает ряд готовых кейсов обработки данных, потоковая обработка событий и прогнозная аналитика.

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

Возможности:

  • Развёртывание приложений на платформах Cloud Foundry и Kubernetes.
  • Готовые приложения для различных сценариев интеграции и обработки данных.
  • Настраиваемые приложения, ориентированные на связующее ПО или службы данных.
  • Простой потоковый конвейер DSL, чтобы указывать, какие приложения развёртывать и как подключать выходы и входы.
  • Графический редактор для интерактивного построения конвейеров данных и мониторинга метрик с помощью WavefrontPrometheusInflux DB или других систем.
  • REST API для создания и развёртывания конвейеров данных с возможностью работы из командной строки.

Spring HATEOAS

Создает REST-представления из ваших Spring-приложений, которые следуют HATEOAS принципам.

Возможности:

  • Модель классов для ссылки, ресурс представления моделей
  • API для создания ссылки, указывающую на методы контроллера Spring MVC
  • Поддержка гипермедиа форматов, таких как HAL

Spring AMQP

Spring AMQP применяет основные концепции Spring при разработке решений на основе AMQP. Он предоставляет "шаблон" как высокоуровневую абстракцию для отправки и получения сообщений. Он также предоставляет поддержку Message-driven для POJO-объектов с интерфейсом "listener container". Эти библиотеки облегчают управление AMPQ ресурсами при использовании DI и декларативного описания конфигурации. Во всех этих случаях, вы увидите сходство с поддержкой JMS в Spring Framework.

Возможности:

  • Listener container для асинхронной обработки входящих сообщений
  • RabbitTemplate для отправки и получения сообщений
  • RabbitAdmin для автоматического описания запросов, обмена и связывания

Spring Web Flow

Spring Web Flow основан на Spring MVC и позволяет реализовать "потоки" web-приложений. Поток представляет собой последовательность шагов, которые необходимо совешить для выполнения поставленной бизнес-задачи.

Spring Web Flow предоставляет декларативный язык описания потоков высокого уровня абстракции. Он может быть интегрирован с широким диапазоном приложений с небольшими изменениями(модель поточного программирования), включая Spring MVC, JSF и даже web-приложения, которые используют Portlet. Ниже приведены наиболее частые проблемы, которые существуют у web-приложений с сохранением состояний и имеющие определенные требования по поведению:

  • Очень сложная визуализация потока
  • Приложение содержит много кода для доступа к НТТР-сессии
  • Обеспечение управления поведения важно, но невозможно
  • Правильная поддержка кнопки "Назад" браузера кажется недостижимой
  • Браузер и сервер не синхронизируются при нажатии кнопки "Назад"
  • Множество вкладок в браузере создают проблему паралеллизма обработки данных в пределах одной НТТР-сессии

Spring Web Flow позволяет решить все эти проблемы.

  • 1 Пользователей нашли это полезным
Помог ли вам данный ответ?

Статьи по Теме

Введение в программирование квантовых процессов

Квантовые компьютеры позволяют решать определённый спектр задач на порядки быстрее, чем...