spring фреймворк что это

Что такое Spring Framework и для чего он нужен?

Введение

Spring-фреймворк обеспечивает комплексную программную и конфигурационную модель для современных Java-enterprise приложений. Ключевой элемент Spring это инфраструктурная поддержка приложений таким образом, чтобы команда разработчиков могла сфокусироваться на бизнес логике приложения которое они пишут, а не на технических деталях платформы на которую они устанавливают приложение.

Возможности

Все доступные фичи и модули описаны по ссылке overview-modules

Минимальные требования

Простейший пример dependency injection

Создадим maven проект с зависимостью от Spring

При этом подключим spring-context. Это один из основных модулей, который предоставляет нам механизмы dependency injection.

Создадим сущность MessagePrinter

Это класс который имеет зависимость от сервиса MessageService

Создадим и сам сервис MessageService

Далее нам понадобиться магия Spring, чтобы связать их вместе

Пример показывает концепцию Dependency Injection в действии, MessagePrinter отвязан(decoupled) от реализации MessageService при этом Spring Framework связывает эти классы вместе в конфигурации которая задается в Application классе.

Вы можете скачать рабочий пример кода по следующей ссылке spring-di-example

Updated: November 06, 2016

Share on

Leave a Comment

You May Also Enjoy

Как писать хорошие тесты?

Создание тестов для программ которые мы создаем это хорошо. Но не менее важно не просто писать тесты, а писать Хорошие тесты.

Ваше первое Angular2 приложение с помощью CLI

В статье будет представлен пример создания Angular2-приложения с помощью CLI

Как очень быстро удалить файлы из каталога в Windows7?

less than 1 minute read

Некоторые программы создают файлы с очень длинными именами или очень много файлов, например node_modules

Что каждый программист должен знать о цифрах с плавающей точкой?

В статье будет представлен пример того, какие нюансы нужно учитывать работая с float и double в Java

Источник

Национальная библиотека им. Н. Э. Баумана
Bauman National Library

Персональные инструменты

Spring Framework

Spring Framework — один из самых популярных фреймворков для создания веб-приложений на Java. Несмотря на то, что Spring не обеспечивал какую-либо конкретную модель программирования, он стал широко распространённым в Java-сообществе главным образом как альтернатива и замена модели Enterprise JavaBeans. Spring предоставляет бо́льшую свободу Java-разработчикам в проектировании, так как Spring предлагает массу функций, которые недоступны в качестве стандартов Java EE, например, Spring Batch или Spring Integration; кроме того, он предоставляет хорошо документированные и лёгкие в использовании средства решения проблем, возникающих при создании приложений корпоративного масштаба. [Источник 2]

Между тем, особенности ядра Spring применимы в любом Java-приложении, и существует множество расширений и усовершенствований для построения веб-приложений на Java Enterprise платформе. По этим причинам Spring приобрёл большую популярность и признаётся разработчиками как стратегически важный фреймворк.

Содержание

Структура

Spring — это не один какой-то конкретный фреймворк. Это общее название для целого ряда небольших фреймворков, каждый из которых выполняет свою работу.

У Spring модульная структура. Это позволяет подключать только те модули, которые нужны для нашего приложения и не подключать те, которыми заведомо не будем пользоваться. Именно этот подход и помог Spring обойти своего конкурента в то время (EJB) и захватить лидерство. [Источник 3] Данная структура показана на Рисунке 1.

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Spring состоит из нескольких модулей:

Модуль data access содержит в себе средства для работы с данными (в основном, с базами данных), web — для работы в сети (в том числе и для создания веб-приложений).

Кроме того, есть еще так-называемая целая спринг-инфраструктура: множество других проектов, которые не входят в сам фреймворк официально, но при этом бесшовно интегрируются в ваш проект на спринге (например, тот же spring security для работы с авторизацией пользователей на сайте).

Компоненты Spring Framework

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

DI/IoC

IoC (Inversion of Control) — инверсия управления. При использовании библиотеки вы сами прописываете в своем коде какой метод какого объекта вызвать, а в случает с фреймворками — чаще всего уже фреймворк будет вызывать в нужный ему момент тот код, который уже написали. То есть, тут уже не вы управляете процессом выполнения кода/программы, а фреймворк это делает за вас. Вы передали ему управление (инверсия управления).

Spring MVC

Ядро платформы, предоставляет базовые средства для создания приложений — управление компонентами (бинами, beans), внедрение зависимостей, MVC фреймворк, транзакции, базовый доступ к БД. В основном это низкоуровневые компоненты и абстракции. По сути, неявно используется всеми другими компонентами. Данный интерфейс изображен на Рисунке 3:

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Spring Security

Spring Security это Java/JavaEE framework, предоставляющий механизмы построения систем аутентификации и авторизации, а также другие возможности обеспечения безопасности для корпоративных приложений, созданных с помощью Spring Framework. У Spring Security есть несколько характеристик: [Источник 4]

Spring Boot

Spring Boot позволяет избежать XML конфигурации, также настраивает ( т.е. приводит в порядок зависимости между компонентами) приложение, упаковывает его в исполняемый связующее звено, которое объединяет вместе набор компонентов в готовое приложение.

Функции Spring Boot:

Преимущества Spring Framework

Считается, что Spring Framework реализует модель разработки, основанную на лучших стандартах индустрии, и делает её доступной во многих областях Java. Таким образом к достоинствам Spring можно отнести:

Аспектно-ориентированное программирование (Aspect Oriented Programming — AOP)

Аспектно-ориентированное программирование (АОП) — это одна из “моделей программирования текущего момента” в мире Java. АОП предоставляет возможность реализации сквозной логики — т.е. логики, которая применяется к множеству частей приложения — в одном месте и обеспечения автоматического применения этой логики по всему приложению. Подход Spring к АОП заключается в создании “динамических прокси” для целевых объектов и “привязывании” объектов к конфигурированному совету для выполнения сквозной логики.

Aspect, Advice, Pointcut, JointPoint и Advice Arguments в АОП

Существуют пункты, из которых состоит аспектно-ориентированное программирование: [Источник 5]

Spring Bean

Термин бин в Spring используется для ссылки на любой компонент, управляемый контейнером. Обычно бины на определенном уровне придерживаются спецификации JavaBean, но это не обязательно особенно если для связывания бинов друг с другом планируется применять Constructor Injection. Для получения экземпляра бина используется ApplicationContext. IoC контейнер управляет жизненным циклом спринг бина, областью видимости и внедрением.

Scope у Spring Bean

В Spring предусмотрены различные области времени действия бинов:

Жизненный цикл Spring Bean

Жизненный цикл Spring бина — время существования класса. Spring бины инициализируются при инициализации Spring контейнера и происходит внедрение всех зависимостей. Когда контейнер уничтожается, то уничтожается и всё содержимое. Если нам необходимо задать какое-либо действие при инициализации и уничтожении бина, то нужно воспользоваться методами init() и destroy(). Для этого можно использовать аннотации @PostConstruct и @PreDestroy().

Источник

Подробное руководство по работе с Java Spring для чайников

Spring – это простая в использовании среда Java MVC с открытым исходным кодом, обеспечивающая всестороннюю поддержку для простой и быстрой разработки приложений Java.

Spring – это облегченный фреймворк, который можно рассматривать как фреймворк фреймворков, поскольку он предлагает поддержку различных фреймворков, таких как Hibernate, Struts, Tapestry, JSF и т. д.

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

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

Вот некоторые наиболее важные особенности Spring Framework:

Краткая история

Вот важные ориентиры из истории:

Spring Framework Architecture

Spring Framework предоставляет 20 модулей, которые можно использовать в зависимости от требований приложения.

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Core и Bean обеспечивают фундаментальную часть платформы, включая IoC и DI.

Основной контейнер

Базовый контейнер дополнительно разделен на подкомпоненты, такие как модули Core, Beans, Context и Expression Language.

Давайте рассмотрим каждую из этих моделей в деталях:

Spring Core:

Основной модуль обеспечивает все основные компоненты каркаса пружины. Включает функции IoC (Inversion of Control) и Inpension Injection.

Модуль предлагает BeanFactory, которая представляет собой сложную реализацию фабричного шаблона.

Context

Модуль Context основан на прочной основе, предоставляемой модулями Core и Beans, и является средой, которая помогает вам получить доступ к любым объектам, определенным и настроенным.

Языки весеннего выражения (SpEL):

Этот модуль предлагает язык выражений для изменения и запроса графов объектов во время выполнения.

Доступ к данным и интеграция:

Уровень доступа к данным и интеграции состоит из модулей JDBC, ORM, JDBC, OXM, JMS и Transaction.

Web: в этом модуле используются слушатели сервлетов и контекст веб-ориентированного приложения. Он также предлагает функцию веб-ориентированной интеграции и функциональность для загрузки файлов из нескольких частей.

Веб-сервлет: Этот модуль хранит реализацию на основе MVC для веб-приложений.

Web-Socket: модуль предлагает основанную на WebSocket и двустороннюю связь между клиентом и сервером в веб-приложениях.

Web-портлет: этот модуль также называется Spring-MVC-Portlet module. Он предлагает портлеты на основе Spring и копирует все функциональные возможности модуля Web-сервлетов.

AOP: язык AOP является полезным инструментом, который позволяет разработчикам добавлять корпоративные функциональные возможности в приложение.

Инструментарий: Этот модуль предлагает инструментарий класса и реализации загрузчика. Используется для конкретных серверов приложений.

Тест: Этот модуль поддерживает тестирование компонентов Spring с помощью инструментов TestNG или JUnit. Он предлагает последовательную загрузку Spring ApplicationContexts и кэширование этих контекстов.

Spring – MVC Framework

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Spring Web MVC Framework предлагает архитектуру модель-представление-контроллер и предлагает компоненты, которые помогают вам быть гибкими и слабо связанными веб-приложениями.

Шаблон MVC позволяет разделять различные аспекты приложения, предлагая слабую связь между этими элементами. Spring MVC также помогает вам создавать гибкие и слабо связанные веб-приложения.

Дизайн MVC также позволяет разделить бизнес-логику, логику представления и логику навигации. Он также предлагает элегантное решение для использования MVC в Spring Framework с помощью DispatcherServlet.

Как работает MVC?

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Аспектно-ориентированное программирование

Аспектно-ориентированное программирование позволяет глобальным свойствам программы решать, как она компилируется в исполняемую программу.

Ключевой единицей модульности является аспект, а не класс. Аспектно-ориентированное программирование разбивает логику программы на различные части, известные как проблемы.

Межотраслевая проблема может затронуть все приложение и сосредоточена в одном месте в коде, таком как безопасность транзакций, управление, ведение журналов, аутентификация и т. д.

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Его также можно рассматривать как динамический шаблон оформления декоратора. Этот шаблон также предлагает дополнительное поведение, которое будет добавлено к существующему классу, оборачивая исходный класс и дублируя его интерфейс и удаляя исходный.

Основные концепции АОП

В Аспектно-ориентированном программировании есть семь основных концепций.

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Давайте обсудим их подробно:

Установка Java Spring

Вот пошаговая информация по установке Java Spring на ваш компьютер:

Шаг 1) Зайдите на сайт www.eclipse.org.

Шаг 2) Загрузите установщик Eclipse Neon и установите его в своей системе Windows.

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Шаг 3) Нажмите кнопку «Загрузить 64-разрядную версию».

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Шаг 4) Перейдите в Eclipse IDE для разработчиков Java и нажмите на ссылку «64-bit».

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Шаг 5) Нажмите на ссылку «Windows 64-bit».

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Шаг 6) Нажмите на кнопку «Загрузить», чтобы загрузить ZIP-файл.

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Шаг 7) Распакуйте zip-файл для загрузки в определенную папку.

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Шаг 8) Нажмите кнопку «Обзор», чтобы выбрать каталог рабочей области.

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Шаг 9) Нажмите «Выбрать папку», чтобы выбрать папку.

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Процесс будет отображаться, как показано на следующем экране.

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Шаг 10) Открытие клиента Eclipse Marketplace.

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Шаг 11) Поиск и установка плагина Spring.

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Шаг 12) Подтвердите выбранные функции и нажмите кнопку «Подтвердить».

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Шаг 13) Принятие условий и установка программного обеспечения.

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Появится экран приветствия с ходом установки программного обеспечения.

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Шаг 14) Нажмите кнопку «Перезагрузить сейчас», чтобы перезапустить Eclipse IDE и применить изменения.

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Будет отображен следующий экран:

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Преимущества Spring Framework

Недостатки Spring Framework

Вот минусы Spring Framework.

Источник

Как Spring упрощает жизнь разработчика: что нужно знать о фреймворке

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Java Developer в NIX

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

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

Фреймворк Spring включает в себя два десятка модулей и, конечно, уместить все в одной статье не получится. В этом материале я расскажу об основных модулях (Core):

Главный принцип философии Spring — минимальное воздействие. На официальном сайте фреймворка говорится, что Spring делает программирование на Java быстрее, легче, проще, безопаснее и самое главное — продуктивнее. Давайте попробуем разобраться, что имели ввиду авторы этих строк.

Базовая терминология для работы со Spring

Человека, знакомящегося со Spring, может испугать обилие новых терминов. И авторы статей «для начинающих» иногда оставляют объяснения этих терминов за скобками, полагая, что это уже все знают или и так поймут из названия. Но я считаю, не лишним будем проговорить эти понятия:

Фреймворк — платформа (заготовка, каркас), которая собирает в себе готовые решения для типичных задач разработчика по настройке приложения. Любой может добавить фреймворк в свое приложение и сфокусироваться на написании его основной логики.

Зависимость (Dependency) — в контексте Java-приложения зависимостью называют класс B, без которого не может функционировать класс А.

Аннотация — «метка» в исходном коде, которая сама по себе является метадатой, которую потом может использовать компилятор/интерпретатор или же, как в нашем случае, фреймворк.

Бин (Bean) — класс в языке Java, написанный по определенным правилам. Java-бины используются для объединения нескольких объектов в один, благодаря чему достигается удобство в передачи данных.

Также в статье будут часто использоваться термины инверсия контроля (Inversion of Control, Ioc) и внедрение зависимостей (Dependency Injection, DI). Для их объяснения недостаточно просто определения, поэтому детально рассмотрим их ниже.

IoC и DI

Часто, когда дают определение Spring, говорят, что это IoC-контейнер. Несмотря на то, что это одна из ключевых функциональностей Spring, такое определение почти ничего не объясняет о нем. Давайте основательно разберемся, что такое IoC и зачем она нужна. Предлагаю сначала выяснить это на примере приложения без Spring.

Инверсия контроля (Inversion of Control — IoC ) — один из популярных принципов объектно-ориентированного программирования (ООП). Она позволяет повысить модульность и расширяемость программы за счет снижения зависимостей между ее компонентами.

Но что значит наличие зависимостей в программировании? Если класс А использует класс В, он становится зависимым от него. По схожему принципу происходит зависимость автомобиля от двигателя, компьютера от процессора. В ООП под зависимостью понимают класс, без которого не может функционировать код другого класса.

Как это выглядит в коде

Давайте выразим в коде пример зависимости уже упомянутых выше машины и двигателя. Первую версию кода напишем без использовании инверсии контроля:

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Код без инверсии контроля

Основные недостатки такого подхода:

Этот код можно немного улучшить, добавив интерфейс:

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Инверсии контроля можно достичь различными способами, но в Spring чаще всего применяются способы Dependency Injection (DI; от англ. «внедрение зависимостей»). Рассмотрим именно их.

Давайте добьемся инверсии контроля при помощи DI-метода: Setter Injection (пока что без Spring Framework):

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Setter Injection, пока что без Spring Framework

Внедрение зависимостей можно также осуществить с помощью Construction Injection, где аргументы будут переданы через конструктор:

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Пример без Spring Framework, но с инверсией управления Constructor Injection

Как видим, инверсия контроля позволила нам уменьшить количество связей, в результате чего класс стало легче изменять и расширять.

Вместе с этим осталась нерешенной следующая проблема: новые классы по прежнему нужно создавать при помощи оператора new (хотя теперь это и делается снаружи исходного кода):

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что этоДавайте рассмотрим пример того, как Spring может справиться с этой проблемой и какие инструменты мы можем использовать.

Добавляем Spring Framework в приложение

Любой ресурс (класс) в Spring называется бином (Bean). Это название взято по аналогии с JavaBeans — классами в языке Java, написанными по определенным правилам (наличие конструктора без параметров, геттеров/сеттеров). Бины в Spring не ограничены такими строгими правилами, но они очень похожи на своих Java-собратьев.

Чтобы добавить Spring в приложение, вам необходимо:

Помните, что выбор конфигурации меняет реализацию интерфейса. Ниже разберем несколько примеров возможных конфигураций на Spring.

XML-конфигурация на Spring

Код приложения с использованием Spring Framework будет выглядеть точно так же, как и без него. В этом и заключается то самое «минимальное воздействие», характерное для Spring.

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Пример приложения на Spring Framework

XML-конфигурацию этого кода можно представить следующим образом:

XВ первой части кода есть масса ссылок. Так в Spring выглядит пространство имен. Но давайте сосредоточим внимание на выделенной области кода. Здесь можно увидеть объявление наших бинов:

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Пример приложения на Spring Framework — XML-конфигурация

Annotation-конфигурация на Spring

Рассмотрим создание конфигураций на Spring при помощи аннотаций (annotation). Они помогут Spring разобраться, где именно существуют зависимости, и что ему нужно с ними делать. Уберем из нашего config.xml все упоминания о бинах и пропишем необходимость сканирования пакета на наличие аннотации @Component :

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Пример приложения на Spring Framework — Annotation конфигурация

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Пример приложения на Spring Framework — Annotation конфигурация

Начиная с версии Spring 4.3, аннотацию @Autowired необязательно ставить на конструктор. Если у нас в коде лишь один конструктор, Spring автоматически определит его как место внедрения зависимостей. Но в случае установки аннотации @Autowired на сеттер ее всегда следует прописывать явно.

Java-конфигурация на Spring

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Пример приложения на Spring Framework — Java конфигурация: слева — конфигурация, справа — код

XML или Annotation?

Какой же подход лучше всего подойдет для создания конфигураций на Spring: XML или аннотации? На мой взгляд, это вопрос вкуса:

В любом случае важно помнить, что конфигурации полностью взаимозаменяемы и не отличаются друг от друга по функционалу. Главное — выбрать один вид конфигурации и придерживаться его во время разработки вашего приложения.

Основные аннотации Spring: внедрение зависимостей с помощью @Autowired

В предыдущем разделе мы определили, зачем нужен Spring, какие проблемы он решает и как подключить Spring Framework в свое приложение. Теперь рассмотрим основной функционал Spring, и как с его помощью можно повлиять на поведение приложения. Давайте пройдемся по самым часто используемым аннотациям.

Аннотация @Autowired отвечает в Spring за внедрение зависимостей. Ею можно пометить место внедрения (сеттер, поле или конструктор), и Spring автоматически свяжет нужный бин с этим местом. Используем в нашем коде внедрение зависимости через сеттер с помощью @Autowired :

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Создадим Java-конфигурацию вместе с аннотацией @ComponentScan — с ее помощью нам больше не нужно будет явно указывать наши бины в коде:

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Давайте рассмотрим каждый тип зависимостей более детально.

Сonstructor Injection

Внедрение через конструктор следует использовать когда зависимость является обязательной, или ее необходимо сделать неизменяемой (с помощью ключевого слова final ).

Благодаря Constructor Injection также легче заметить «суперклассы» — перегруженные классы с большим количеством зависимостей. Если в классе все зависимости подключаются через конструктор, то в глаза сразу бросается большое количество параметров. И у разработчика появится ощущение, что он делает что-то не так.

Setter Injection

Внедрение через сеттер следует использовать, когда зависимость является опциональной.

Setter Injection часто используется в классах, которые должны легко поддаваться реконфигурации. Помимо этого, сеттеры дают возможность определять зависимости в интерфейсе.

Field Injection и основные причины его избегать

Внедрение зависимостей при помощи Field Injection не рекомендуется делать по нескольким причинам:

Setter или Constructor Injection?

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

Вы всегда вправе выбрать любой тип внедрения зависимостей и при необходимости даже смешивать их. Главное помнить, что выбор типа внедрения всегда должен быть основан на ваших потребностях и потребностях разрабатываемого вами ПО.

Bean Scopes и их разновидности

@Scope(“singleton”)

По умолчанию все бины в Spring создаются как singleton — один объект на контейнер. Это означает, что каждый раз, когда вы будете запрашивать у контейнера бин, вам будет приходить одна и та же ссылка с одним и тем же выделенным объектом:

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

@Scope(“prototype”)

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Скоупы web-приложения

Существует целый ряд бин-скоупов, характерных только для веб-приложений. С их помощью можно ограничивать жизненный цикл экземпляра одним запросом ( request ), сессией ( session ), сервлетом ( application ) или веб-сокетом ( websocket ).

Жизненный цикл бина: использование @PostConstruct и @PreDestroy

Перед тем, как спринговый бин будет доступен к использованию, он проходит ряд этапов своего «рождения».

Существует две основные аннотации для внедрения в жизненный цикл. Ими помечается метод, который будет внедрен в жизненный цикл.

Без ошибок: аннотация @Qualifier

spring фреймворк что это. Смотреть фото spring фреймворк что это. Смотреть картинку spring фреймворк что это. Картинка про spring фреймворк что это. Фото spring фреймворк что это

Три компонента одного @Component

У аннотации @Component существует три аналога:

Вместо вывода

Про Spring можно рассказывать бесконечно: фреймворк очень объемен и полон различных нюансов. Тем не менее не стоит ошибочно путать массивность Spring с его сложностью. Spring создан, чтобы облегчить разработчику жизнь. При правильном понимании теоретических основ ООП и уделении должного внимания чтению технической документации Spring поможет вам сэкономить уйму времени, которое вы могли потратить на монотонную и ненужную работу.

Для тех, кто хочет знать больше:

Этот материал – не редакционный, это – личное мнение его автора. Редакция может не разделять это мнение.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *