Привет, друзья! Мы продолжаем серию публикаций посвященных запуску курса
«Разработчик на Spring Framework».
Не понимаете, почему Spring пользуется такой популярностью среди разработчиков Java? Прочитайте этот материал, чтобы узнать!
Особенности Фреймворка Spring
Spring — легкий, но мощный фреймворк для разработки приложений. В более широком смысле, Spring — хорошо проработанный инструмент, который поддерживает несколько веб-приложений, использующих Java в качестве языка программирования.
До появления этого фреймворка, приложения разрабатывались с помощью стандартов JEE. С ними можно развертывать приложения на любом сервере приложений JEE. Но было и несколько проблем, включая:
- Код становился все сложнее по мере развития приложения;
- Производительность системы страдала от тяжести приложений;
- Проблема поиска компонента.
Все оказалось решено с появлением Spring. Фреймворк заметили на рынке благодаря модульности его базового функционала. Его можно разделить на разные модули, каждый из которых выполняет свою функцию.
Самый важные особенности Фреймворка Spring
- Легкость
Фреймворк Spring очень легкий с точки зрения размера и функциональности. Все благодаря его реализации POJO, которая не требует наследования каких-либо классов или реализации каких-либо интерфейсов.
- Аспектно-Ориентированное Программирование (АОП)
Важная часть Spring. Аспектно-Ориентированное Программирование используется для отделения сквозной функциональности (например, логирования, безопасности, и тд) от бизнес-логики. В будущих статьях вы узнаете об этом более подробно.
- Управление Транзакциями
Используется для объединения нескольких API, управляющими транзакциями, и координации транзакций объектов Java. Кроме того, оно не связано со средой J2EE и используется с бесконтейнерными средами.
- Контейнер
Spring проектирует и управляет жизненным циклом и настройками объектов приложения.
- Внедрение Зависимостей
Эта фича позволяет разрабатывать слабо связанные приложения. Таким образом, стало гораздо проще проводить их модульное тестирование. Это также позволяет разработчику по необходимости менять модули.
- Интеграция с Другими Фреймворками
Spring хорош еще и тем, что не пытается решать проблемы, которые уже решены. Он просто обеспечивает интеграцию фреймворков, решающих более сложные проблемы. К примеру, IBATIS, Hibernate, Toplink и тд.
Особенности Spring 5.0
Конечно, со времен первого представления Spring Родом Джонсоном (Rod Johnson) в 2003 году, фреймворк был значительно улучшен. С тех пор было выпущено несколько версий. На текущий момент, на рынке актуальны версии Spring 5.0x. Поэтому перейдем к главным обновленным фичам и улучшениям Spring 5.0 с Java 8, в качестве минимального требования ко всем кодовым базам, и совместимостью с JDK 9 во время выполнения, а также для пакетов сборки и тестирования:
- JDK 8 Plus 9 и Java EE 7 Baseline
Кодовая база Spring основана на уровне кода Java 8. Он обеспечивает читаемость (благодаря наследованию обобщенных типов), а условная поддержка Java 8 предоставляется непосредственно из кода. В Spring модулях необходим уровень Java EE 7 API вместе с Servlet 3.1, JMS 2.0, JPA 2.1 и Bean validation 1.1. В Spring 5.0 были добавлены недавние серверы, например, Jetty 9.3+, Tomcat 8.5+ и WildFly 10+. Совместимость с JDK 9 была добавлена во время выполнения, а также для пакетов тестирования и сборки.
- Удаление Классов, Методов и Пакетов
Пакет mock.staticmock был удален из
модуля Spring вместе с поддержкой AnnotationDrivenStaticEntityMockingControl. Минимальное требование — Tiles 3 и Hibernate 5, а значит пакеты web.view.tiles2 и form.hibernate3/orm.hibernate4 удаляются. Spring 5.0 также отказался от поддержки Portlet, Velocity, XMLBeans, Guava, JDO и JasperReports. Поэтому тем, кто работает с ними, рекомендуется использовать Spring 4.3.x. Многие устаревшие методы и классы были удалены с некоторыми компромиссами для часто используемых методов в экосистеме Spring.
- Улучшение Контейнера Ядра
В Spring 5.0 контейнер ядра был значительно обновлен:
- Улучшение JDK+
- Некоторые объявления Java 8 методов в основных интерфейсах Spring;
- Использование Стандартных Кодировок из JDK7;
- Эффективный доступ к параметрам и методам с помощью Java 8
- Подготовка к JDK 9
- Использование пересмотренной согласованности обработки исключений инициализации для конструктора
- Улучшения, связанные с XML
- Упрощение пространства имен XML для неверсионных схем;
- Отсутствие поддержки устаревших функций и разрешение последних XSD файлов;
- Определенные для версии объявления все еще поддерживаются, но подтверждаются.
- Реактивная Модель Программирования
В последней версии Spring есть несколько изменений касательно модели Реактивного Программирования. Одно из них — использование буфера данных ядра Spring, а также абстракций кодера/декодера и реализации spring-web HTTP кодека сообщений с поддержкой XML и JSON. Кроме того, новый WebClient и модуль Spring Web Reactive предоставляют реактивную поддержку модуля
@Controller
, адаптируя Servlet3.1 и не-Servlet runtime-контейнеры, например Undertow.
- Общие Улучшения Сети
Обобщенная поддержка разрешения медиа типов с помощью MediaTypeFactory. Кроме того, предоставляется полная поддержка Servel 3.1 вместе с поддержкой Protobuf 3.0 в версии 5.
- Улучшение Тестирования
Тестовая среда Spring была значительно улучшена.
- Полная поддержка программирования Junit 5’s Jupiter в фреймворке SpringTestContext
- SpringExtension — реализация нескольких API расширений от Jupiter, предоставляющая полную поддержку существующей фичи фреймворка TestContext, которая позволяет использовать
@ExtendWith
— SpringExtention класс.
@SpringJUintConfig
, соединяющий @ExtendedWith Jupiter
с @ContextConfigurationfrom
(фреймворка TestContext);
@SpringJunitWebConfig
— аннотация, объединяющая @ExtendedWith Jupiter
c @ContextConfiguration
и @WebAppConfiguration TestContext
фреймворка.
- Новые колбек-методы для тестирования выполнения представлены в TestContext фреймворке с помощью TestNG и JUnit 5 через SpringRunner.
- Поддержка XMLUnit улучшена до версии 2.2
Вывод
Из этого обзора фреймворка Spring вы узнали о разных особенностях его функционала. Кроме того, к последним фичам Spring 5.x по сравнении с версией Spring 4.3.x добавились улучшения тестовой среды, веб-сервера и кода, связанного с XML. Если же у вас еще остались сомнения, пишите о них в комментариях ниже, а лучше записывайтесь на
открытый вебинар, который уже завтра проведет
кандидат физико-математических наук — Юрий Дворжецкий.
комментарии (2)