Spring Framework — это самое сердце платформы Spring. Он содержит набор функциональных возможностей, которые обеспечивают очень прочную основу для всех современных приложений на базе Java. Все перечисленные ниже решения предоставляются «из коробки», что позволяет нам сосредоточиться на создании кода бизнес-логики самостоятельно.
Нам не нужно специально беспокоиться о создании ключевых объектов, сопоставлении данных, проверке или построении транзакционных систем. Мы просто пользуемся преимуществами этой системы.
Итак, какие функциональные возможности мы получаем с помощью Spring Framework?
Вот список основных технологий:
Инъекция зависимостей (DI)
Dependency Injection — это, пожалуй, самая впечатляющая функциональность, с которой мы сталкиваемся при первом знакомстве с Spring. Это позволяет Spring делегировать ответственность за создание объектов и их доставку в определенные места приложения. Мы рассмотрим эту тему в следующих главах: Введение зависимостей — основы и Введение зависимостей — расширения. Если вы хотите изучать Spring Framework, переходите по ссылке https://averin.pro/course_catalog/course_catalog_27.
Обработка событий (События)
Существует ряд событий в жизненном цикле компонентов, о наступлении которых мы можем быть автоматически уведомлены. Кроме того, мы можем захотеть создать собственные (пользовательские) события. Механизм уведомления или прослушивания (например, с использованием аннотации @EventListener), безусловно, полезен для таких задач.
Управление ресурсами
Интерфейс Resource с его встроенными реализациями, такими как UrlResource, ClassPathResource, ByteArrayResource и т.д., предоставляет нам возможность указать тип ресурса, который мы хотим использовать, а интерфейс ResourceLoader позволяет нам легко создать объект на основе такого ресурса.
Языковая локализация (i18n)
Интернационализация и языковая локализация в Spring позволяет нам хранить ключи со значениями (например, язык) в отдельных файлах, которые могут быть дополнительно параметризованы. Ключевым интерфейсом для таких задач является MessageResource, а одной из наиболее часто используемых реализаций является ResourceBundleMessageSource.
Валидация
Механизм основан на интерфейсе Validator и подходит для проверки корректности данных, предоставляемых бобам. Таким образом, мы можем создавать собственные реализации валидации для конкретных типов объектов. Мы ограничены нашим воображением и… требованиями бизнеса.
Связывание данных
Чрезвычайно важный механизм, который отвечает за привязку данных, обрабатываемых фреймворком, к определенным полям в конкретных типах объектов. Например, когда мы получаем данные в виде HTTP-запроса, они должны быть сопоставлены с соответствующими полями в определенном объекте. Такая операция называется связыванием. Мы описываем связывание данных в контексте HTTP-методов на основе конкретных аннотаций в этой главе: Spring MVC — отображение HTTP-запросов.
Преобразование типа
Иногда обычных креплений недостаточно, и нам нужно что-то дополнительное. Например, когда мы хотим преобразовать строку в дату в определенном формате и временной зоне (мы получаем строки из внешней системы и хотим хранить даты в определенном формате и зоне в базе данных). Именно тогда становится полезным использование интерфейса Converter и интерфейса ConverterFactory. Таким образом, мы можем создать свой собственный конвертер и подключить его к платформе, чтобы он автоматически срабатывал, когда нам это нужно.
SpEL
Spring Expression Language — это язык выражений, который поддерживает фреймворк Spring в контексте доступа к объектам и разбора данных, например, в запросах.
АОП (Аспектно-ориентированное программирование)
Аспектно-ориентированное программирование имеет несколько значений. Его можно представить как способ предоставления определенного алгоритма для выполнения в нескольких местах в коде проекта, определяя его в одном месте, вместе с указанием мест, где он должен выполняться. Здесь появляется такое понятие, как Aspect, а также Join point и Pointcut. Более подробно мы описываем аспекты в следующих главах: Spring AOP — Основные концепции и Spring AOP — AspectJ.
Наша рекомендация
Стоит уделить время ознакомлению с каждой из упомянутых тем, но если вы раньше не программировали на Spring, мы рекомендуем сначала изучить тему Dependency Injection (DI), поскольку это абсолютная основа фреймворка.
Мы используем его в StartAPP
Инъекция зависимостей — это решение, которое мы используем во всех наших курсах. Во всех них мы также используем обработку событий (хотя и в незначительной степени, прослушивая событие ApplicationReadyEvent с помощью аннотации @EventListener). Кроме того, в пакете Web Application Course — Mega мы также используем аспекты для регистрации времени выполнения всех методов, обрабатывающих бизнес-логику.
Отправить ответ