1. Введение
Spring Framework предоставляет чистую и выразительную модель программирования и конфигурации для современных корпоративных приложений на основе Java, которые могут работать на любой платформе развертывания.
В этой статье представлен общий обзор среды Spring и, в основном, пакета org.springframework , который обеспечивает поддержку внедрения зависимостей, управления транзакциями, веб-приложений, доступа к данным, обмена сообщениями, тестирования и многого другого.
2. Особенности
Spring framework предлагает полный список функций:
- Веб-приложение Spring MVC и фреймворк веб-сервиса RESTful
- Аспектно-ориентированное программирование, включая декларативное управление транзакциями Spring.
- Внедрение зависимости
- Инверсия контроля
и многое другое.
3. Зависимости Maven
Если вы хотите добавить Spring в свой проект Maven, вы можете найти больше информации об этом здесь .
4. Весенние проекты
Framework включает в себя ряд различных модулей и проектов. От конфигурации до безопасности, от веб-приложений до больших данных — какими бы ни были потребности вашего приложения в инфраструктуре, существует проект Spring, который поможет вам его создать.
Начните с малого и используйте только то, что вам нужно — Spring имеет модульную структуру. Давайте посмотрим на некоторые из этих проектов здесь.
4.1. Весенняя сеть MVC
Инфраструктура Web MVC предоставляет архитектуру Model-View-Controller, разработанную на основе DispatcherServlet
, который обрабатывает все HTTP-запросы и ответы и делает приложение слабо связанным.
Лучшее в нем то, что он позволяет вам использовать любой объект в качестве объекта команды или формы — нет необходимости реализовывать интерфейс или базовый класс, специфичный для фреймворка. Его привязка данных очень гибкая: например, он рассматривает несоответствия типов как ошибки проверки, которые могут быть оценены приложением, а не как системные ошибки.
Здесь вы можете найти полное руководство .
4.2. Весенняя платформа ввода-вывода
IO Platform определяет набор зависимостей (обе зависимости Spring Framework как сторонние библиотеки), которые могут быть включены в проект Java, чтобы вы могли выбирать необходимые зависимости, не беспокоясь о совместимости между их версиями (поскольку Spring IO гарантирует это).
Платформа ввода-вывода сертифицирована для работы с Java 7 и 8.
Взгляните на проект GitHub .
4.3. Весенний ботинок
Spring Boot упрощает создание автономных приложений производственного уровня на основе Spring, которые можно «просто запустить». Это позволяет очень легко создать приложение на базе Spring с минимумом работы.
Приложение, созданное с его помощью, может быть в значительной степени автоматически настроено с некоторыми разумными значениями по умолчанию, а рядом с этим может быть улучшено с помощью показателей (сколько запросов, сколько времени заняли запросы и т. д.).
Он состоит из нескольких (необязательных) модулей:
- CLI — интерфейс командной строки, основанный на Groovy, для запуска/остановки приложений, созданных с помощью весенней загрузки.
- Boot Core — основа для других модулей.
- Auto-configure — модуль для автоматической настройки широкого спектра проектов Spring. Он обнаружит доступность определенных фреймворков (Spring Batch, Spring Data JPA, Hibernate, JDBC).
- Actuator — этот проект после добавления активирует определенные корпоративные функции (безопасность, метрики, страницы ошибок по умолчанию) для вашего приложения.
- Стартеры — различные проекты быстрого запуска, которые можно включить в качестве зависимости в файл сборки Maven или Gradle. Он будет иметь необходимые зависимости для этого типа приложения. В настоящее время существуют стартовые проекты для веб-проекта (на основе tomcat и причала), существуют Spring Batch, Spring Data JPA, Spring Integration, Spring Security.
- Инструменты — в этот проект включен инструмент сборки Maven и Gradle, а также пользовательский загрузчик Spring Boot (используемый в одном исполняемом файле jar/war).
Мы можем найти артефакт Maven здесь и взглянуть на проект GitHub .
4.4. Весенние данные
Миссия Spring Data состоит в том, чтобы предоставить знакомую и согласованную модель программирования на основе Spring для доступа к данным, сохраняя при этом особые черты базового хранилища данных.
Основная цель этого проекта — упростить создание приложений на базе Spring, использующих новые технологии доступа к данным, такие как нереляционные базы данных, фреймворки с уменьшением карты и облачные службы данных, а также обеспечить улучшенную поддержку технологий реляционных баз данных. .
Это зонтичный проект, который содержит множество подпроектов, специфичных для данной базы данных (например , JPA , MongoDB , Redis , Apache Solr , Gemfire , Apache Cassandra ). Проекты разрабатываются в сотрудничестве со многими компаниями и разработчиками, стоящими за этими интересными технологиями.
4.5. Весенняя безопасность
Spring Security — это фреймворк, ориентированный на обеспечение как аутентификации, так и авторизации приложений Java. Как и во всех проектах Spring, реальная сила Spring Security заключается в том, насколько легко его можно расширить для удовлетворения пользовательских требований. Он выпущен под лицензией Apache 2.0, поэтому вы можете уверенно использовать его в своих проектах.
Кроме того, его легко освоить, развернуть и управлять им. Он имеет специальное пространство имен безопасности, которое предоставляет директивы для наиболее распространенных операций, обеспечивая полную безопасность приложения всего в нескольких строках XML и может защитить ваши приложения от атак, таких как фиксация сеанса, кликджекинг, подделка межсайтовых запросов и т. д.
Spring Security также интегрирован со многими другими технологиями Spring, включая Spring Web Flow, Spring Web Services и Pivotal tc Server.
Ознакомьтесь с часто задаваемыми вопросами по безопасности Spring, чтобы получить более глубокое представление, и страницей зависимостей Maven . Кроме того, ознакомьтесь с руководствами по безопасности Spring для аутентификации , регистрации и настройки Spring Security с помощью Maven .
4.6. Весенний социальный
Spring Social — это расширение платформы, которое позволяет приложениям подключаться к поставщикам программного обеспечения как услуги, таким как Twitter, Facebook и другим API-интерфейсам на основе аутентификации OAuth . Он предоставляет готовую к использованию платформу аутентификации OAuth для веб-приложений.
Функции:
- Расширяемая платформа поставщика услуг, которая значительно упрощает процесс подключения учетных записей локальных пользователей к учетным записям размещенного поставщика.
- Контроллер подключения, который обрабатывает поток авторизации между вашим веб-приложением Java/Spring, поставщиком услуг и вашими пользователями.
- Привязки Java к API популярных поставщиков услуг, таких как Facebook, Twitter, LinkedIn, TripIt и GitHub.
- Контроллер входа, который позволяет пользователям проходить аутентификацию в вашем приложении путем входа через поставщика услуг.
Руководства по началу работы:
Spring предоставляет довольно много примеров проектов GitHub , чтобы вы могли быстро начать работу, а ссылка на Spring Social также удобна со страницей быстрого запуска .
4.7. Весенняя оболочка
Spring Shell — это интерактивная оболочка, которую можно легко расширить с помощью команд с использованием модели программирования на основе Spring.
Пользователи проекта оболочки могут легко создать полнофункциональное приложение оболочки ( также известное как
командная строка), полагаясь на jar-файл Spring Shell и добавляя свои собственные команды (которые входят в качестве методов в bean-компоненты Spring). Создание приложения командной строки может быть полезно, например
, для взаимодействия с REST API вашего проекта или для работы с содержимым локального файла.
Проект GitHub можно найти здесь.
4.8. Спринг Мобайл
Spring Mobile — это расширение фреймворка и Spring Web MVC , цель которого — упростить разработку мобильных веб-приложений.
Spring Mobile — это платформа, которая предоставляет возможности для определения типа устройства, отправляющего запрос на ваш веб-сайт Spring, и предоставления альтернативных представлений на основе этого устройства. Как и во всех проектах Spring, реальная сила Spring Mobile заключается в том, насколько легко его можно расширить.
Функции:
- Абстракция распознавателя устройств для обнаружения мобильных и планшетных устройств на стороне сервера.
- Управление предпочтениями сайта, которое позволяет пользователю указать, предпочитает ли он или она «обычный», «мобильный» или «планшетный» интерфейс.
- Переключатель сайтов, способный переключать пользователя на наиболее подходящий сайт, будь то мобильный телефон, планшет или обычный, в зависимости от его или ее устройства и, при необходимости, указывать предпочтения сайта.
- Управление представлением с учетом устройства для организации и управления различными представлениями для конкретных устройств.
Этот образец приложения поможет вам быстро приступить к работе.
С помощью Spring MVC вы также можете определять устройство , управлять предпочтениями веб -сайта или обслуживать мобильный веб-контент.
4.9. Весенняя партия
Spring Batch — это легкая комплексная платформа, предназначенная для разработки пакетных приложений, необходимых для повседневной работы корпоративных систем.
Пакетные приложения в этом контексте относятся к автоматизированным автономным системам, предназначенным для обработки больших объемов данных. Spring Batch автоматизирует эту базовую пакетную итерацию, предоставляя возможность обрабатывать аналогичные транзакции в виде набора, как правило, в автономной среде без какого-либо взаимодействия с пользователем.
Spring Batch работает, считывая данные с настраиваемым размером блока из источника данных, обрабатывая их и, наконец, записывая в ресурс.
Источником данных для ридера могут быть плоские файлы (текстовый файл, файл XML, файл CSV…), реляционная база данных (MySQL…), MongoDB.
Точно так же писатель может записывать данные в плоские файлы, реляционные базы данных, MongoDB, почтовую программу и т. д.
Начните быстро, создав пакетную службу и используя другие пакетные ресурсы Spring .
5. Пакеты Core Spring
Здесь давайте взглянем на основные пакеты Spring.
org.springframework.cache — этот пакет поддерживает подпакеты и классы для декларативного управления кешем, настройку кеша с открытым исходным кодом в библиотеке Caffeine , классы поддержки для кеша с открытым исходным кодом EhCache 2.x.
org.springframework.context — этот пакет основан на пакете bean-компонентов, чтобы добавить поддержку источников сообщений и шаблона проектирования Observer, а также возможность для объектов приложения получать ресурсы с использованием согласованного API.
org.springframework.core — предоставляет базовые классы для обработки исключений и определения версий, а также другие основные вспомогательные функции, не относящиеся к какой-либо части платформы.
org.springframework.expression — этот пакет предоставляет основные абстракции языка Spring Expression
.
org.springframework.http — этот пакет содержит базовую абстракцию HTTP на стороне клиента/сервера.
- org.springframework.jdbc — классы в этом пакете упрощают использование JDBC и снижают вероятность распространенных ошибок.
org.springframework.jms — этот пакет содержит классы интеграции для JMS, обеспечивающие доступ к JMS в стиле Spring.
org.springframework.jndi — классы в этом пакете упрощают использование JNDI, упрощая доступ к конфигурации, хранящейся в JNDI, и предоставляют полезные суперклассы для классов доступа JNDI.
org.springframework.orm.hibernate5 — пакет, обеспечивающий интеграцию Hibernate 5.x с концепциями Spring.
org.springframework.test.util — общие служебные классы для использования в модульных и интеграционных тестах.
Этот список ограничен и описывает только основные пакеты для среды Spring. Вы можете найти полный список здесь .
6. Заключение
В этой краткой обзорной статье мы рассмотрели различные проекты, присутствующие в экосистеме Spring, и создали богатую коллекцию зависимостей Maven, проектов GitHub и комплексных функций, которые предлагает каждый проект, чтобы сделать наши веб-приложения безопасными, масштабируемыми и простыми в использовании. жить с.
Мы также рассмотрели основные пакеты, которые дают нам возможность сосредоточиться на логическом аспекте наших приложений.