1. введение
Spring Framework предоставляет чистую и выразительную модель программирования и конфигурации для современных корпоративных приложений на базе Java, которые могут работать на любой платформе развертывания.
В этой статье рассматривается обзор платформы Spring на высоком уровне и, в основном, пакет org.springframework , который обеспечивает поддержку внедрения зависимостей, управления транзакциями, веб-приложений, доступа к данным, обмена сообщениями, тестирования и многого другого.
2. Особенности
Spring framework предлагает полный список функций:
- Веб-приложение Spring MVC и фреймворк веб-службы RESTful
- Аспектно-ориентированное программирование, включая декларативное управление транзакциями Spring
- Инъекция зависимостей
- Инверсия управления
и многое другое.
3. Зависимости Maven
Если вы хотите добавить Spring в свой проект Maven, вы можете найти более подробную информацию об этом здесь .
4. Весенние проекты
Структура включает в себя ряд различных модулей и проектов. От конфигурации до безопасности, от веб – приложений до больших данных-каковы бы ни были потребности вашего приложения в инфраструктуре, существует проект Spring, который поможет вам его создать.
Начните с малого и используйте только то, что вам нужно – пружина модульна по своей конструкции. Давайте рассмотрим некоторые из этих проектов здесь.
4.1. Spring Web MVC
Web MVC framework предоставляет архитектуру Model-View-Controller, разработанную вокруг DispatcherServlet , которая обрабатывает все HTTP-запросы и ответы и делает приложение слабо связанным.
Самое лучшее в нем то, что он позволяет использовать любой объект в качестве объекта команды или формы – нет необходимости реализовывать интерфейс или базовый класс для конкретной платформы. Его привязка данных отличается высокой гибкостью: например, он рассматривает несоответствия типов как ошибки проверки, которые могут быть оценены приложением, а не как системные ошибки.
Здесь вы можете найти полное руководство .
4.2. Платформа Spring IO
Платформа ввода-вывода определяет набор зависимостей (как зависимости Spring Framework, так и сторонние библиотеки), которые могут быть включены в проект Java, чтобы вы могли выбирать необходимые зависимости, не беспокоясь о совместимости между их версиями (поскольку Spring IO гарантирует это).
Платформа ввода-вывода сертифицирована для работы с Java 7 и 8.
Взгляните на проект GitHub .
4.3. Пружинный Ботинок
Spring Boot позволяет легко создавать автономные, производственные приложения на основе Spring, которые вы можете “просто запустить”. Это позволяет очень легко создать приложение с пружинным питанием с минимумом работы.
Приложение, созданное с его помощью, может быть в значительной степени автоматически сконфигурировано с некоторыми разумными значениями по умолчанию, а затем может быть улучшено с помощью метрик (сколько запросов, сколько времени заняли запросы и т. Д.).
Он состоит из нескольких (дополнительных) модулей:
- CLI – интерфейс командной строки, основанный на Groovy, для запуска/остановки приложений, созданных spring boot.
- Boot Core – База для других модулей.
- Автоматическая настройка – Модуль для автоматической настройки широкого спектра проектов Spring. Он обнаружит доступность определенных фреймворков (Spring Batch, Spring Data JPA, Hibernate, JDBC).
- Привод – При добавлении этого проекта в приложение будут включены определенные корпоративные функции (Безопасность, Метрики, страницы ошибок по умолчанию).
- Starters – Различные проекты быстрого запуска для включения в качестве зависимости в файл сборки Maven или Gradle. Он будет иметь необходимые зависимости для этого типа приложения. В настоящее время существуют стартовые проекты для веб-проекта (на основе tomcat и jetty), Spring Batch, Spring Data JPA, Spring Integration, Spring Security.
- Инструменты – В этот проект включен инструмент сборки Maven и Gradle, а также пользовательский загрузчик Spring (используемый в одном исполняемом 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 заключается в том, насколько легко она может быть расширена в соответствии с индивидуальными требованиями. Он выпущен под лицензией Apache 2.0 , поэтому вы можете уверенно использовать его в своих проектах.
Он также прост в освоении, развертывании и управлении. Он имеет выделенное пространство имен безопасности, которое предоставляет директивы для большинства распространенных операций, обеспечивая полную безопасность приложений всего в нескольких строках XML и может защитить ваши приложения от таких атак, как фиксация сеанса, клик-джекинг, подделка межсайтовых запросов и т. Д.
Spring Security также интегрирована со многими другими технологиями Spring, включая Spring Web Flow, Spring Web Services и Pivotal tc Server.
Взгляните на Часто задаваемые вопросы Spring security, чтобы получить более глубокое представление и страницу зависимостей Maven . Кроме того, ознакомьтесь с учебниками по безопасности Spring для Аутентификации , Регистрации и настройки безопасности Spring с помощью Maven .
4.6. Весенняя социальная
Spring Social -это расширение фреймворка, которое позволяет приложениям подключаться к поставщикам программного обеспечения как услуги, таким как Twitter, Facebook и другие OAuth API на основе аутентификации. Он предоставляет готовую к использованию платформу аутентификации OAuth для веб-приложений.
Особенности:
- Расширяемая платформа поставщика услуг, которая значительно упрощает процесс подключения локальных учетных записей пользователей к учетным записям размещенных поставщиков.
- Контроллер подключения, который обрабатывает поток авторизации между веб-приложением Java/Spring, поставщиком услуг и пользователями.
- Привязки Java к популярным API-интерфейсам поставщиков услуг, таким как Facebook, Twitter, LinkedIn, TripIt и GitHub.
- Контроллер входа, который позволяет пользователям проходить проверку подлинности в вашем приложении, выполнив вход через поставщика услуг.
Руководство по началу работы:
- Доступ к данным Facebook
- Весенняя настройка социального Твиттера
- Вторичный вход в Facebook
Spring предоставляет довольно много примеров проектов GitHub , чтобы вы могли быстро начать, и Spring Social reference также удобен с помощью страницы quick start .
4.7. Пружинная оболочка
Spring Shell – это интерактивная оболочка, которую можно легко расширить с помощью команд, использующих модель программирования на основе Spring.
Пользователи проекта оболочки могут легко создать полнофункциональное приложение оболочки ( aka командной строки), в зависимости от jar Spring Shell и добавив свои собственные команды (которые поставляются в виде методов в spring beans). Создание приложения командной строки может быть полезно например для взаимодействия с REST API вашего проекта или для работы с локальным содержимым файлов.
Проект GitHub можно найти здесь.
4.8. Пружинный Мобильный
Spring Mobile является расширением фреймворка и Spring Web MVC , целью которого является упрощение разработки мобильных веб-приложений.
Spring Mobile-это платформа, которая предоставляет возможности для определения типа устройства, отправляющего запрос на ваш веб-сайт Spring, и предоставления альтернативных представлений на основе этого устройства. Как и все весенние проекты, реальная сила Spring Mobile заключается в том, насколько легко ее можно расширить.
Особенности:
- Абстракция распознавателя устройств для обнаружения мобильных и планшетных устройств на стороне сервера
- Управление предпочтениями сайта, которое позволяет пользователю указать, предпочитает ли он “обычный”, “мобильный” или “планшетный” опыт
- Переключатель сайтов, способный переключать пользователя на наиболее подходящий сайт, мобильный, планшетный или обычный, в зависимости от его устройства и, возможно, указывающий предпочтения сайта
- Управление представлениями с учетом устройств для организации и управления различными представлениями для конкретных устройств.
Это пример приложения поможет вам быстро начать работу.
Вы также можете обнаружить устройство , обработать предпочтения веб-сайта или обслуживать мобильный веб-контент с помощью Spring MVC.
4.9. Весенняя партия
Spring Batch – это легкий, всеобъемлющий фреймворк, предназначенный для разработки пакетных приложений, жизненно важных для повседневной работы корпоративных систем.
Пакетные приложения в этом контексте относятся к автоматизированным автономным системам, предназначенным для массовой обработки данных. Spring Batch автоматизирует эту базовую итерацию пакета, предоставляя возможность обрабатывать аналогичные транзакции как набор, как правило, в автономной среде без какого-либо взаимодействия с пользователем.
Пакет Spring работает, считывая данные с настраиваемым размером блока из источника данных, обрабатывая их и, наконец, записывая в ресурс.
Источником данных для читателя могут быть плоские файлы (текстовый файл, XML-файл, CSV-файл…), реляционная база данных (MySQL…), MongoDB. Аналогично, писатель может записывать данные в плоские файлы, реляционные базы данных, MongoDB, mailer и т. Д.
Быстро начните работу с Создания пакетной службы и с другими ресурсами Spring batch /.
5. Основные Пружинные Пакеты
Здесь давайте взглянем на основные пакеты пружин.
org.springframework.cache – Этот пакет поддерживает подпакеты и классы для декларативного управления кэшем, настройки кэша с открытым исходным кодом в библиотеке Кофеин , поддерживает классы для кэша с открытым исходным кодом EhCache 2.x .
org.springframework.context – Этот пакет основан на пакете beans, чтобы добавить поддержку источников сообщений и шаблона проектирования наблюдателя, а также возможность для объектов приложения получать ресурсы с помощью согласованного 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 framework. Вы можете найти полный список здесь .
6. Заключение
В этой краткой обзорной статье мы рассмотрели различные проекты, присутствующие в экосистеме Spring, и собрали богатую коллекцию зависимостей Maven, проектов GitHub и всеобъемлющих функций, которые предлагает каждый проект, чтобы сделать наши веб-приложения безопасными, масштабируемыми и простыми в использовании.
Мы также рассмотрели основные пакеты, которые дают нам возможность сосредоточиться на логическом аспекте наших приложений.