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?
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. Описание этих элементов следующее:
- Модуль SpEL предоставляет мощный язык выражений для манипулирования объектами во время выполнения.
- Контекст создан на основе модулей Beans и Core и позволяет получить доступ к любому объекту, определенному в настройках. Ключевым элементом модуля Context является интерфейс ApplicationContext.
- Модуль Core предоставляет ключевые части фреймворка, включая свойства IoC и DI.
- Модуль Bean отвечает за создание и управление Spring Beans – это единица структуры контекста приложения.
Веб-слой Spring Framework
Веб-слой фреймворка Spring состоит из Web, Web-MVC, Web-Socket, Web-Portlet и т. д.
- Модуль Web предоставляет функции, такие как загрузка файлов, создание веб-приложений, веб-сервисы REST и т. д.
- Web-MVC содержит реализацию Spring MVC для веб-приложений.
- Web-Socket обеспечивает поддержку общения между клиентом и сервером с использованием веб-сокетов в веб-приложениях.
- Web-Portlet предоставляет реализацию MVC с портлет-окружением.
Доступ к данным в Spring Framework
Контейнер доступа/интеграции данных состоит из JDBC, ORM, OXM, JMS и модуля транзакций.
- JDBC предоставляет абстрактный уровень JDBC и устраняет необходимость для разработчика вручную регистрировать монотонный код, связанный с подключением к базе данных.
- Spring ORM обеспечивает интеграцию с популярными ORM, такими как Hibernate, JDO, которые являются реализациями JPA.
- Модуль OXM отвечает за связь между объектом и XML – XMLBeans, JAXB, и т.д.
- Модуль JMS (Java Messaging Service) отвечает за создание, отправку и получение сообщений.
- Transactions поддерживает управление транзакциями для классов, реализующих определенные методы, и POJO.
Различные модули
Spring также включает ряд других важных модулей, таких как AOP, Aspects, Instrumentation, Messaging и Test.
- AOP реализует аспектно-ориентированное программирование и позволяет использовать весь арсенал возможностей AOP.
- Модуль Aspects обеспечивает интеграцию с AspectJ, который также является мощным фреймворком AOP.
- Instrumentation отвечает за поддержку инструментации классов и загрузчика классов, используемых в серверных приложениях.
- Модуль Messaging предоставляет поддержку STOMP.
- Наконец, модуль Test обеспечивает тестирование с использованием TestNG или фреймворка JUnit.
Особенности Spring 5
Spring 5 принес массовое обновление по сравнению с Spring 4. Некоторые из важных особенностей Spring 5 включают:
- Поддержка Java 8, Java 9, Java EE 7, Java EE 8, Servlet 4.0, Bean Validation 2.0 и JPA 2.2. Рад видеть, что Spring пытается догнать последние версии основных технологий, используемых в настоящее время.
- Улучшенный журнал с новым модулем – spring-jcl.
- Операции с файлами используют потоки NIO 2, что повышает производительность.
- Поддержка Reactor 3.1 Flux и Mono, а также RxJava 1.3 и 2.1 в качестве возвращаемых значений из методов контроллеров Spring MVC.
- Поддержка Kotlin, Project Lombok, JSON Binding API в качестве альтернативы Jackson и GSON.
- Spring WebFlux – Spring становится реактивным.
- Поддержка JUnit 5
- Поддержка функционального программирования через Kotlin.
Вы можете ознакомиться с проектами Spring на нашем GitHub Repository.
Source:
https://www.digitalocean.com/community/tutorials/spring-framework