Учебники

Spring Framework — Обзор

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

Spring Framework — это платформа Java с открытым исходным кодом. Первоначально он был написан Родом Джонсоном и впервые выпущен под лицензией Apache 2.0 в июне 2003 года.

Весна легка, когда дело доходит до размера и прозрачности. Базовая версия Spring Framework составляет около 2 МБ.

Основные функции Spring Framework могут быть использованы при разработке любого Java-приложения, но есть расширения для создания веб-приложений поверх платформы Java EE. Платформа Spring предназначена для упрощения использования J2EE-разработки и продвижения хороших методов программирования за счет использования модели программирования на основе POJO.

Преимущества использования Spring Framework

Ниже приведен список немногих преимуществ использования Spring Framework —

  • Spring позволяет разработчикам разрабатывать приложения корпоративного класса с использованием POJO. Преимущество использования только POJO состоит в том, что вам не нужен продукт EJB-контейнера, такой как сервер приложений, но у вас есть возможность использовать только надежный контейнер сервлета, такой как Tomcat, или какой-либо коммерческий продукт.

  • Весна организована по модульному принципу. Несмотря на то, что количество пакетов и классов существенно, вам нужно беспокоиться только о тех, которые вам нужны, и игнорировать все остальное.

  • Spring не изобретает колесо, вместо этого он действительно использует некоторые из существующих технологий, таких как несколько платформ ORM, каркасы журналирования, таймеры JEE, Quartz и JDK и другие технологии представления.

  • Тестирование приложения, написанного на Spring, очень просто, потому что в эту среду перемещен код, зависящий от среды. Кроме того, благодаря использованию JavaBeanstyle POJO становится проще использовать внедрение зависимостей для ввода тестовых данных.

  • Веб-фреймворк Spring — это хорошо спроектированный веб-MVC-фреймворк, который предоставляет отличную альтернативу веб-фреймворкам, таким как Struts или другим чрезмерно спроектированным или менее популярным веб-фреймворкам.

  • Spring предоставляет удобный API-интерфейс для преобразования специфичных для технологии исключений (например, JDBC, Hibernate или JDO) в согласованные, непроверенные исключения.

  • Легкие контейнеры IoC имеют тенденцию быть легкими, особенно по сравнению, например, с контейнерами EJB. Это полезно для разработки и развертывания приложений на компьютерах с ограниченными памятью и ресурсами ЦП.

  • Spring предоставляет согласованный интерфейс управления транзакциями, который может масштабироваться до локальной транзакции (например, с использованием одной базы данных) и масштабироваться до глобальных транзакций (например, с использованием JTA).

Spring позволяет разработчикам разрабатывать приложения корпоративного класса с использованием POJO. Преимущество использования только POJO состоит в том, что вам не нужен продукт EJB-контейнера, такой как сервер приложений, но у вас есть возможность использовать только надежный контейнер сервлета, такой как Tomcat, или какой-либо коммерческий продукт.

Весна организована по модульному принципу. Несмотря на то, что количество пакетов и классов существенно, вам нужно беспокоиться только о тех, которые вам нужны, и игнорировать все остальное.

Spring не изобретает колесо, вместо этого он действительно использует некоторые из существующих технологий, таких как несколько платформ ORM, каркасы журналирования, таймеры JEE, Quartz и JDK и другие технологии представления.

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

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

Spring предоставляет удобный API-интерфейс для преобразования специфичных для технологии исключений (например, JDBC, Hibernate или JDO) в согласованные, непроверенные исключения.

Легкие контейнеры IoC имеют тенденцию быть легкими, особенно по сравнению, например, с контейнерами EJB. Это полезно для разработки и развертывания приложений на компьютерах с ограниченными памятью и ресурсами ЦП.

Spring предоставляет согласованный интерфейс управления транзакциями, который может масштабироваться до локальной транзакции (например, с использованием одной базы данных) и масштабироваться до глобальных транзакций (например, с использованием JTA).

Инъекция зависимостей (DI)

Технология, с которой Spring больше всего ассоциируется, — это разновидность Inversion of Control, основанная на Dependency Injection (DI) . Инверсия контроля (IoC) является общей концепцией, и она может быть выражена многими различными способами. Внедрение зависимостей является лишь одним конкретным примером инверсии контроля.

При написании сложного Java-приложения классы приложения должны быть как можно более независимыми от других Java-классов, чтобы увеличить возможность повторного использования этих классов и тестировать их независимо от других классов во время модульного тестирования. Инъекция зависимостей помогает склеивать эти классы и в то же время сохранять их независимость.

Что такое внедрение зависимости? Давайте посмотрим на эти два слова отдельно. Здесь часть зависимости переводится в ассоциацию между двумя классами. Например, класс A зависит от класса B. Теперь давайте посмотрим на вторую часть — инъекцию. Все это означает, что класс B будет введен в класс A IoC.

Внедрение зависимостей может происходить путем передачи параметров в конструктор или пост-конструированием с использованием методов установки. Поскольку Dependency Injection является сердцем Spring Framework, мы объясним эту концепцию в отдельной главе с соответствующим примером.

Аспектно-ориентированное программирование (АОП)

Одним из ключевых компонентов Spring является структура аспектно-ориентированного программирования (AOP) . Функции, охватывающие несколько точек приложения, называются сквозными задачами, и эти сквозные задачи концептуально отделены от бизнес-логики приложения. Существуют различные общие хорошие примеры аспектов, включая ведение журнала, декларативные транзакции, безопасность, кэширование и т. Д.

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

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