Что такое Spring Framework

Обновлено: 30.06.2024

Инверсия управления (IOC) и внедрение зависимостей

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

В таком случае существует зависимость между Сотрудником и Адресом (тесная связь). В сценарии инверсии управления мы делаем это примерно так:

Таким образом, IOC делает код слабо связанным. В таком случае нет необходимости изменять код, если наша логика будет перемещена в новую среду.

В среде Spring за внедрение зависимости отвечает контейнер IOC. Мы предоставляем метаданные в контейнер IOC либо в виде XML-файла, либо в виде аннотации.

Преимущество внедрения зависимостей

  • делает слабосвязанный код настолько простым в сопровождении
  • облегчает тестирование кода

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

Существует множество преимуществ Spring Framework. Они следующие:

1) Предустановленные шаблоны

Среда Spring предоставляет шаблоны для технологий JDBC, Hibernate, JPA и т. д. Так что нет необходимости писать слишком много кода. Он скрывает основные шаги этих технологий.

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

2) Слабая связь

Приложения Spring слабо связаны из-за внедрения зависимостей.

3) Легко проверить

Внедрение зависимостей упрощает тестирование приложения. Приложению EJB или Struts требуется сервер для запуска приложения, но платформа Spring не требует сервера.

4) Легкий

Среда Spring очень легкая благодаря реализации POJO. Spring Framework не заставляет программиста наследовать какой-либо класс или реализовывать какой-либо интерфейс. Вот почему он называется неинвазивным.

5) Быстрое развитие

Функция внедрения зависимостей в Spring Framework и поддержка различных платформ упрощают разработку приложений JavaEE.

6) Мощная абстракция

Он обеспечивает мощную абстракцию спецификаций JavaEE, таких как JMS, JDBC, JPA и JTA.

7) Декларативная поддержка

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

Весенний индекс

Весеннее руководство

Весна в IDE

Внедрение зависимостей

Весна АОП

Шаблон Spring Jdbc

Весна ORM

ЗАКЛИНАНИЕ

Весна MVC

Форма Spring MVC

Приложения Spring MVC

Весенняя проверка MVC

Плитки Spring MVC

Весеннее удаленное взаимодействие

Весна ОХМ

Весенняя почта Java

Весенняя сеть

Руководство по безопасности Spring

Весенняя загрузка

Весеннее интервью

Весенняя викторина

Справочные ссылки

Youtube

Для просмотра видео присоединяйтесь к нашему каналу Youtube: присоединяйтесь сейчас

Отзыв

Помогите другим, поделитесь

facebook
twitter
pinterest

Изучите последние руководства

Шаблоны проектирования Python

Подготовка

Aptitude

Логическое мышление

Вербальная способность

Вопросы для собеседования с компанией

Тенденционные технологии

B.Tech / MCA

Службы Javatpoint

JavaTpoint предлагает слишком много высококачественных услуг. Напишите нам на [email protected], чтобы получить больше информации о предоставляемых услугах.

  • Дизайн веб-сайта
  • Разработка веб-сайта
  • Разработка Java
  • Разработка PHP
  • Вордпресс
  • Графический дизайн
  • Логотип
  • Цифровой маркетинг
  • Поисковая оптимизация на странице и за ее пределами
  • Контекстная реклама
  • Разработка контента
  • Корпоративное обучение
  • Обучение в классе и онлайн
  • Ввод данных

Подготовка к университетскому городку

Spring Framework предоставляет комплексную модель программирования и настройки для современных корпоративных приложений на основе Java на любой платформе развертывания.

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

Политика поддержки и миграция

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

Возможности

Основные технологии: внедрение зависимостей, события, ресурсы, i18n, проверка, привязка данных, преобразование типов, SpEL, АОП.

Тестирование: фиктивные объекты, среда TestContext, тест Spring MVC, WebTestClient.

Доступ к данным: транзакции, поддержка DAO, JDBC, ORM, Marshalling XML.

Интеграция: удаленное взаимодействие, JMS, JCA, JMX, электронная почта, задачи, планирование, кеш.

Языки: Kotlin, Groovy, динамические языки.

Доклады SpringOnePlatform 2017

Быстрый старт вашего проекта

Документация

У каждого проекта Spring есть свой; в нем подробно объясняется, как можно использовать функции проекта и чего с их помощью можно достичь.

Учебники

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

Поддержка OSS

Бесплатные обновления безопасности и исправления ошибок при поддержке сообщества Spring. См. политику поддержки VMware Tanzu OSS.

Коммерческая поддержка

Бизнес-поддержка со стороны экспертов Spring в течение срока действия OSS, а также расширенная поддержка после окончания срока службы OSS.
Общедоступные выпуски критических исправлений и проблем безопасности по запросу клиентов.

Будущий выпуск

Поколение еще не выпущено, сроки могут измениться.

О коммерческой поддержке (*)

Эта страница показывает текущее состояние выпусков проекта и не определяет политику коммерческой поддержки. Дополнительную информацию см. в официальной политике поддержки.

Двигаться вперед

VMware предлагает обучение и сертификацию, чтобы ускорить ваш прогресс.

Получить поддержку

Spring Runtime предлагает поддержку и двоичные файлы для OpenJDK™, Spring и Apache Tomcat® в рамках одной простой подписки.

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

(Примечание редактора: около 6700 слов, вы, вероятно, не захотите читать это на мобильном устройстве. Добавьте в закладки и вернитесь позже. И даже на компьютере читайте этого слона по кусочку за раз. )

Введение

Сложность экосистемы Spring

Многие компании используют Spring, но затем вы заходите на сайт spring.io и видите, что вселенная Spring на самом деле состоит из 21 активного проекта. Ой!

Кроме того, если вы начали программировать с помощью Spring в последние пару лет, очень высока вероятность того, что вы перешли напрямую в Spring Boot или Spring Data.

Однако это руководство посвящено исключительно одному, самому важному из этих проектов: Spring Framework. Почему?

Потому что важно знать, что Spring Framework является основой для всех других проектов. Spring Boot, Spring Data, Spring Batch построены поверх Spring.

Это имеет два последствия:

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

Потратив примерно 15 минут на чтение этого руководства, которое охватывает наиболее важные 80 % фреймворка Spring, вы миллион раз окупитесь в своей профессиональной карьере.

Что такое Spring Framework?

Короткий ответ:

По своей сути среда Spring представляет собой просто контейнер для внедрения зависимостей с несколькими дополнительными уровнями (вспомните: доступ к базе данных, прокси-серверы, аспектно-ориентированное программирование, RPC, веб-инфраструктура MVC). Это поможет вам быстрее и удобнее создавать Java-приложения.

Теперь это не очень помогает, не так ли?

К счастью, есть и длинный ответ:

Остальная часть этого документа.

Основы внедрения зависимостей

Если вы уже знаете, что такое внедрение зависимостей, можете сразу перейти к контейнеру внедрения зависимостей Spring. В противном случае читайте дальше.

Что такое зависимость?

Представьте, что вы пишете класс Java, который позволяет получить доступ к таблице users в вашей базе данных. Вы бы назвали эти классы DAO (объект доступа к данным) или репозиториями.Итак, вы собираетесь написать класс UserDAO.

У вашего UserDAO есть только один метод, позволяющий находить пользователей в таблице базы данных по их соответствующим идентификаторам.

Для выполнения соответствующего SQL-запроса вашему UserDAO необходимо подключение к базе данных. А в мире Java вы (обычно) получаете это соединение с базой данных из другого класса, называемого DataSource. Итак, теперь ваш код будет выглядеть примерно так:

Вопрос в том, откуда ваш UserDao получает свою зависимость от источника данных? Очевидно, что DAO зависит от действительного источника данных для запуска этих SQL-запросов.

Как создавать зависимости с помощью new()

Наивным подходом было бы простое создание нового источника данных с помощью конструктора каждый раз, когда он вам нужен. Таким образом, для подключения к базе данных MySQL ваш UserDAO может выглядеть так:

Мы хотим подключиться к базе данных MySQL; поэтому мы используем MysqlDataSource и жестко заданный URL/имя пользователя/пароль здесь для облегчения чтения.

Мы используем наш недавно созданный источник данных для запроса.

Это работает, но давайте посмотрим, что произойдет, если мы расширим наш класс UserDao другим методом, findByFirstName.

К сожалению, этот метод также нуждается в DataSource для работы. Мы можем добавить этот новый метод в наш UserDAO и применить некоторые рефакторинги, введя метод newDataSource.

findById был переписан для использования нового метода newDataSource().

Добавлен метод findByFirstName, в котором также используется новый метод newDataSource().

Это наш недавно извлеченный метод, способный создавать новые источники данных.

Этот подход работает, но имеет два недостатка:

Что произойдет, если мы захотим создать новый класс ProductDAO, который также будет выполнять операторы SQL? Тогда ваш ProductDAO будет также иметь зависимость DataSource, которая теперь доступна только в вашем классе UserDAO. Затем у вас будет другой аналогичный метод или извлечен вспомогательный класс, содержащий ваш источник данных.

Мы создаем совершенно новый источник данных для каждого отдельного SQL-запроса. Учтите, что DataSource открывает реальное сокетное соединение между вашей Java-программой и вашей базой данных. Это требует времени и довольно дорого. Было бы намного лучше, если бы мы открыли только один DataSource и использовали его повторно, вместо того, чтобы открывать и закрывать их тонны. Одним из способов сделать это может быть сохранение DataSource в частном поле в нашем UserDao, чтобы его можно было повторно использовать между методами, но это не помогает при дублировании между несколькими DAO.

Как «управлять» зависимостями в глобальном классе приложения

Чтобы решить эти проблемы, вы можете подумать о написании глобального класса приложения, который выглядит примерно так:

До появления Enterprise Java Beans (EJB) разработчикам Java приходилось использовать JavaBeans для создания веб-приложений. Хотя JavaBeans помогали в разработке компонентов пользовательского интерфейса (UI), они не могли предоставлять такие услуги, как управление транзакциями и безопасность, которые требовались для разработки надежных и безопасных корпоративных приложений. Появление EJB рассматривалось как решение этой проблемы. EJB расширяет компоненты Java, такие как веб-компоненты и корпоративные компоненты, и предоставляет службы, помогающие в разработке корпоративных приложений. Однако разработка корпоративного приложения с помощью EJB была непростой задачей, поскольку разработчику приходилось выполнять различные задачи, такие как создание интерфейсов Home и Remote и реализация методов обратного вызова жизненного цикла, что усложняло предоставление кода для EJB. Из-за этой сложности разработчики начали поиск более простого способа разработки корпоративных приложений.

Среда Spring появилась как решение всех этих сложностей. В этой среде используются различные новые методы, такие как аспектно-ориентированное программирование (АОП), обычный старый объект Java (POJO) и внедрение зависимостей (DI), для разработки корпоративных приложений. , тем самым устраняя сложности, связанные с разработкой корпоративных приложений с использованием EJB, Spring представляет собой облегченную среду с открытым исходным кодом, которая позволяет разработчикам Java EE 7 создавать простые, надежные и масштабируемые корпоративные приложения. Эта структура в основном ориентирована на предоставление различных способов помочь вам управлять вашими бизнес-объектами. Это значительно упростило разработку веб-приложений по сравнению с классическими платформами Java и интерфейсами прикладного программирования (API), такими как подключение к базе данных Java (JDBC), JavaServer Pages (JSP) и Java Servlet.

Среду Spring можно рассматривать как набор подплатформ, также называемых слоями, например Spring AOP. Spring объектно-реляционное сопоставление (Spring ORM). Spring Web Flow и Spring Web MVC. Вы можете использовать любой из этих модулей отдельно при создании веб-приложения. Модули также можно сгруппировать вместе, чтобы улучшить функциональность веб-приложения.

Возможности Spring Framework

  • Контейнер IoC:
    относится к основному контейнеру, который использует шаблон DI или IoC для неявного предоставления ссылки на объект в классе во время выполнения. Этот шаблон действует как альтернатива шаблону локатора сервисов. Контейнер IoC содержит код ассемблера, который управляет конфигурацией объектов приложения.
    Среда Spring предоставляет два пакета, а именно org.springframework.beans и org.springframework.context, которые помогают в обеспечении функциональности контейнера IoC.< /li>
  • Структура доступа к данным.
    Позволяет разработчикам использовать API-интерфейсы сохраняемости, такие как JDBC и Hibernate, для хранения данных сохраняемости в базе данных. Это помогает в решении различных проблем разработчика, например, как взаимодействовать с соединением с базой данных, как убедиться, что соединение закрыто, как работать с исключениями и как реализовать управление транзакциями. Это также позволяет разработчикам легко писать код для доступа к данным сохраняемости во всем приложении.
  • Среда Spring MVC:
    позволяет создавать веб-приложения на основе архитектуры MVC. Все запросы, сделанные пользователем, сначала проходят через контроллер, а затем направляются в разные представления, то есть на разные страницы JSP или сервлеты. Функции обработки и проверки форм среды Spring MVC можно легко интегрировать со всеми популярными технологиями просмотра, такими как ISP, Jasper Report, FreeMarker и Velocity.
  • Управление транзакциями.
    Помогает управлять транзакциями приложения, не затрагивая его код. Эта платформа предоставляет Java Transaction API (JTA) для глобальных транзакций, управляемых сервером приложений, и локальных транзакций, управляемых с помощью JDBC Hibernate, Java Data Objects (JDO) или других API доступа к данным. Это позволяет разработчику моделировать широкий спектр транзакций на основе декларативного и программного управления транзакциями Spring.
  • Веб-служба Spring:
    Создает конечные точки и определения веб-службы на основе классов Java, но ими сложно управлять в приложении. Чтобы решить эту проблему, Spring Web Service предлагает многоуровневые подходы, которые отдельно управляются синтаксическим анализом Extensible Markup Language (XML) (техника чтения XML и манипулирования им). Spring обеспечивает эффективное сопоставление для передачи входящего запроса XML-сообщения объекту, а разработчик может легко распределять XML-сообщение (объект) между двумя машинами.
  • Уровень абстракции JDBC:
    Помогает пользователям легко и эффективно обрабатывать ошибки. Программный код JDBC можно сократить, если этот уровень абстракции реализовать в веб-приложении. Этот уровень обрабатывает исключения, такие как DriverNotFound. Все SQLExceptions транслируются в класс DataAccessException. Исключение Spring для доступа к данным не является специфичным для JDBC, поэтому объекты доступа к данным (DAO) не привязаны только к JDBC.
  • Среда Spring TestContext:
    предоставляет средства модульного и интеграционного тестирования для приложений Spring. Кроме того, платформа Spring TestContext предоставляет специальные функции интеграционного тестирования, такие как управление контекстом и кэширование DI тестовых фикстур, а также управление транзакционными тестами с семантикой отката по умолчанию.

Эволюция Spring Framework

Впервые Spring Framework был выпущен в 2004 году. После этого были внесены существенные изменения, например, в Spring 2.0 появились пространства имен XML и поддержка AspectJ, в Spring 2.5 появилась конфигурация на основе аннотаций, в Spring 3.0 появилась @Configuration на основе Java. модель. Последний выпуск фреймворка Spring — 4.0. он выпущен с поддержкой технологий Java 8 и Java EE 7. Хотя вы по-прежнему можете использовать Spring с более старой версией Java, минимальные требования ограничены Java SE 6. Spring 4.0 также поддерживает технологии Java EE 7, такие как служба сообщений Java (JMS) 2.0, API сохраняемости Java (JPA) 2.1, Проверка компонента 1.1, сервлет 3.1 и JCache.

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

Spring Framework Architecture

Среда Spring состоит из семи модулей, которые показаны на рисунке выше. Этими модулями являются Spring Core, Spring AOP, Spring Web MVC, Spring DAO, Spring ORM, контекст Spring и поток Spring Web. Эти модули предоставляют разные платформы для разработки различных корпоративных приложений; например, вы можете использовать модуль Spring Web MVC для разработки приложений на основе MVC.

Читайте также: