Фреймворк Spring

Spring Framework – один из самых популярных фреймворков Java EE. В этой статье мы узнаем о следующем:

  • Архитектура Spring framework
  • Основные компоненты Spring
  • Различные проекты в рамках зонта Spring framework.

I looked at the Google Trends chart for Spring Framework, Servlet, JSP, and JSF. It’s clear that Spring is far ahead from all other Java EE technologies.

Spring Framework – Google Trends

Что такое Spring Framework?

Spring – один из самых популярных фреймворков для Java Enterprise Edition. Разработчики по всему миру используют Spring для создания надежных и высококачественных приложений. Фреймворк Spring был разработан Родом Джонсоном. С тех пор Spring стал альтернативной технологией в мире Java для модели EJB. С помощью Spring framework можно создавать различные типы приложений.

Основные концепции Spring – DI, IoC, AOP

  • Невозможно понять, что такое Spring Framework, не понимая, что такое Внедрение зависимостей и Инверсия управления . Внедрение зависимостей, также известное как DI, является одним из типов инверсии управления (IoC).
  • Инверсия управления – это принцип объектно-ориентированного программирования, при котором объекты программы не зависят от конкретных реализаций других объектов, но могут знать о своих абстракциях (интерфейсах) для последующего взаимодействия.
  • Внедрение зависимостей – это композиция структурных шаблонов проектирования, при которой для каждой функции приложения существует условно независимый объект (сервис), который может иметь потребность в использовании других объектов (зависимостей), известных ему по интерфейсам. Зависимости передаются (реализуются) сервису в момент его создания. Это ситуация, когда мы вводим элемент одного класса в другой. На практике внедрение зависимостей реализуется передачей параметров в конструктор или использованием сеттеров. Библиотеки, реализующие этот подход, также называются контейнерами IoC.
  • Аспектно-ориентированное программирование – парадигма программирования, позволяющая выделять поперечную (функциональную) функциональность в приложении. Эти функции, охватывающие несколько узлов приложения, называются поперечными заботами, и они отделяются от непосредственной бизнес-логики приложения. В ООП основной единицей является класс, в то время как в АОП ключевым элементом является аспект. Внедрение зависимостей помогает разделять классы приложения на отдельные модули, а АОП помогает выделять поперечные заботы от объектов, которых они затрагивают.

Архитектура Spring Framework

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

Основные компоненты Spring Framework

Основной контейнер Spring состоит из четырех модулей: SpEL, Context, Core, Beans. Описание этих элементов следующее:

  1. Модуль SpEL предоставляет мощный язык выражений для манипулирования объектами во время выполнения.
  2. Контекст создан на основе модулей Beans и Core и позволяет получить доступ к любому объекту, определенному в настройках. Ключевым элементом модуля Context является интерфейс ApplicationContext.
  3. Модуль Core предоставляет ключевые части фреймворка, включая свойства IoC и DI.
  4. Модуль Bean отвечает за создание и управление Spring Beans – это единица структуры контекста приложения.

Веб-слой Spring Framework

Веб-слой фреймворка Spring состоит из Web, Web-MVC, Web-Socket, Web-Portlet и т. д.

  1. Модуль Web предоставляет функции, такие как загрузка файлов, создание веб-приложений, веб-сервисы REST и т. д.
  2. Web-MVC содержит реализацию Spring MVC для веб-приложений.
  3. Web-Socket обеспечивает поддержку общения между клиентом и сервером с использованием веб-сокетов в веб-приложениях.
  4. Web-Portlet предоставляет реализацию MVC с портлет-окружением.

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

Контейнер доступа/интеграции данных состоит из JDBC, ORM, OXM, JMS и модуля транзакций.

  1. JDBC предоставляет абстрактный уровень JDBC и устраняет необходимость для разработчика вручную регистрировать монотонный код, связанный с подключением к базе данных.
  2. Spring ORM обеспечивает интеграцию с популярными ORM, такими как Hibernate, JDO, которые являются реализациями JPA.
  3. Модуль OXM отвечает за связь между объектом и XML – XMLBeans, JAXB, и т.д.
  4. Модуль JMS (Java Messaging Service) отвечает за создание, отправку и получение сообщений.
  5. Transactions поддерживает управление транзакциями для классов, реализующих определенные методы, и POJO.

Различные модули

Spring также включает ряд других важных модулей, таких как AOP, Aspects, Instrumentation, Messaging и Test.

  1. AOP реализует аспектно-ориентированное программирование и позволяет использовать весь арсенал возможностей AOP.
  2. Модуль Aspects обеспечивает интеграцию с AspectJ, который также является мощным фреймворком AOP.
  3. Instrumentation отвечает за поддержку инструментации классов и загрузчика классов, используемых в серверных приложениях.
  4. Модуль Messaging предоставляет поддержку STOMP.
  5. Наконец, модуль Test обеспечивает тестирование с использованием TestNG или фреймворка JUnit.

Особенности Spring 5

Spring 5 принес массовое обновление по сравнению с Spring 4. Некоторые из важных особенностей Spring 5 включают:

  1. Поддержка Java 8, Java 9, Java EE 7, Java EE 8, Servlet 4.0, Bean Validation 2.0 и JPA 2.2. Рад видеть, что Spring пытается догнать последние версии основных технологий, используемых в настоящее время.
  2. Улучшенный журнал с новым модулем – spring-jcl.
  3. Операции с файлами используют потоки NIO 2, что повышает производительность.
  4. Поддержка Reactor 3.1 Flux и Mono, а также RxJava 1.3 и 2.1 в качестве возвращаемых значений из методов контроллеров Spring MVC.
  5. Поддержка Kotlin, Project Lombok, JSON Binding API в качестве альтернативы Jackson и GSON.
  6. Spring WebFlux – Spring становится реактивным.
  7. Поддержка JUnit 5
  8. Поддержка функционального программирования через Kotlin.

Вы можете ознакомиться с проектами Spring на нашем GitHub Repository.

Ссылки: Официальный веб-сайт Spring, Документация по Spring

Source:
https://www.digitalocean.com/community/tutorials/spring-framework