Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Spring Framework является фреймворк и инверсия управления контейнера для платформы Java . Основные функции платформы могут использоваться любым приложением Java, но есть расширения для создания веб-приложений на основе платформы Java EE (Enterprise Edition). Хотя структура не требует какой-либо конкретной модели программирования , она стала популярной в сообществе Java как дополнение к модели Enterprise JavaBeans (EJB). Spring Framework имеет открытый исходный код .

История версий [ править ]

Первая версия была написана Родом Джонсоном , который выпустил фреймворк вместе с публикацией своей книги Expert One-on-One J2EE Design and Development в октябре 2002 года. Фреймворк был впервые выпущен под лицензией Apache 2.0 в июне 2003 года. Первая веха релиз, 1,0, был выпущен в марте 2004 года с последующими выпусками поэтапные в сентябре 2004 года и в марте 2005 года Spring 1.2.6 структура выиграла награду производительности Толчок и (API Java для XML) JAX Innovation Award в 2006 году [2] [3 ] Spring 2.0 был выпущен в октябре 2006 года, Spring 2.5 в ноябре 2007 года, Spring 3.0 в декабре 2009 года, Spring 3.1 в декабре 2011 года и Spring 3.2.5 в ноябре 2013 года. [4]Spring Framework 4.0 был выпущен в декабре 2013 года. [5] Заметные улучшения в Spring 4.0 включали поддержку Java SE (Standard Edition) 8, Groovy 2, некоторых аспектов Java EE 7 и WebSocket .

Spring Framework 4.2.0 был выпущен 31 июля 2015 года и был немедленно обновлен до версии 4.2.1, выпущенной 1 сентября 2015 года. [6] Он «совместим с Java 6, 7 и 8 с упором на основные усовершенствования. и современные веб-возможности " . [7]

Spring Framework 4.3 был выпущен 10 июня 2016 года и будет поддерживаться до 2020 года. [8] Это «будет последнее поколение в рамках общих системных требований Spring 4 (Java 6+, Servlet 2.5+), [...]» . [9]

Сообщается, что Spring 5 будет построен на основе Reactor Core, совместимой с Reactive Streams . [10]

Модули [ править ]

Spring Framework включает несколько модулей, которые предоставляют ряд услуг:

  • Spring Core Container: это базовый модуль Spring, который предоставляет контейнеры Spring (BeanFactory и ApplicationContext). [11]
  • Аспектно-ориентированное программирование : позволяет решать сквозные задачи .
  • Аутентификация и авторизация : настраиваемые процессы безопасности, которые поддерживают ряд стандартов, протоколов, инструментов и практик через подпроект Spring Security (ранее Acegi Security System for Spring).
  • Соглашение важнее конфигурации : в модуле Spring Roo предлагается решение для быстрой разработки корпоративных приложений на основе Spring.
  • Доступ к данным : работа с системами управления реляционными базами данных на платформе Java с использованием Java Database Connectivity (JDBC) и инструментов объектно-реляционного сопоставления и с базами данных NoSQL
  • Инверсия контейнера управления : настройка компонентов приложения и управление жизненным циклом объектов Java, в основном через внедрение зависимостей.
  • Обмен сообщениями: конфигурационная регистрация объектов прослушивателя сообщений для прозрачного потребления сообщений из очередей сообщений через службу сообщений Java (JMS), улучшение отправки сообщений по сравнению со стандартными API-интерфейсами JMS
  • Модель – представление – контроллер : структура на основе HTTP и сервлетов, обеспечивающая перехватчики для расширения и настройки веб-приложений и веб-служб RESTful (передача репрезентативного состояния).
  • Фреймворк удаленного доступа: конфигурирование в стиле удаленного вызова процедур (RPC) в стиле маршалинга объектов Java по сетям, поддерживающим вызов удаленных методов Java (RMI), CORBA (архитектура посредника общих запросов к объектам) и протоколы на основе HTTP , включая веб-службы ( SOAP (простой доступ к объектам) Протокол) )
  • Управление транзакциями : объединяет несколько API управления транзакциями и координирует транзакции для объектов Java.
  • Удаленное управление: настраиваемое отображение и управление объектами Java для локальной или удаленной настройки через Java Management Extensions (JMX)
  • Тестирование : классы поддержки для написания модульных тестов и интеграционных тестов

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

Центральным элементом Spring Framework является его контейнер инверсии управления (IoC), который обеспечивает единообразные средства настройки и управления объектами Java с помощью отражения . Контейнер отвечает за управление жизненными циклами конкретных объектов: создание этих объектов, вызов их методов инициализации и настройку этих объектов путем их соединения.

Объекты, созданные контейнером, также называются управляемыми объектами или компонентами . Контейнер можно настроить, загрузив файлы XML (расширяемого языка разметки) или обнаружив определенные аннотации Java в классах конфигурации. Эти источники данных содержат определения bean-компонентов, которые предоставляют информацию, необходимую для создания bean-компонентов.

Объекты можно получить либо с помощью поиска зависимостей, либо с помощью внедрения зависимостей. [12] Поиск зависимостей - это шаблон, в котором вызывающий запрашивает объект-контейнер для объекта с определенным именем или определенного типа. Внедрение зависимостей - это шаблон, в котором контейнер передает объекты по имени другим объектам через конструкторы , свойства или фабричные методы .

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

Контейнер можно превратить в частично совместимый контейнер EJB (Enterprise JavaBeans) 3.0 с помощью проекта Pitchfork. Некоторые [ кто? ] критикуют Spring Framework за несоответствие стандартам. [13] Однако SpringSource не считает соответствие EJB 3 своей главной целью и утверждает, что Spring Framework и контейнер позволяют создавать более мощные модели программирования. [14]Программист не создает объект напрямую, но описывает, как он должен быть создан, определяя его в файле конфигурации Spring. Точно так же напрямую не вызываются сервисы и компоненты; вместо этого файл конфигурации Spring определяет, какие службы и компоненты должны быть вызваны. Этот IoC предназначен для упрощения обслуживания и тестирования.

Фреймворк аспектно-ориентированного программирования [ править ]

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

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

По сравнению с фреймворком AspectJ Spring AOP менее мощный, но и менее сложный. Spring 1.2 включает поддержку настройки аспектов AspectJ в контейнере. Spring 2.0 добавил больше интеграции с AspectJ; например, язык pointcut используется повторно и может быть смешан с аспектами, основанными на Spring AOP. Кроме того, Spring 2.0 добавила библиотеку Spring Aspect, которая использует AspectJ для предоставления общих функций Spring, таких как декларативное управление транзакциями и внедрение зависимостей через AspectJ во время компиляции или ткачества во время загрузки. SpringSource также использует AspectJ AOP в других проектах Spring, таких как Spring Roo и Spring Insight, причем Spring Security также предлагает библиотеку аспектов на основе AspectJ.

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

Spring Framework внутренне использует Spring AOP для управления транзакциями, безопасности, удаленного доступа и JMX .

Начиная с версии 2.0 фреймворка Spring предоставляет два подхода к настройке АОП:

  • схематический подход [15] и
  • Стиль аннотаций на основе @ AspectJ. [16]
<beans  xmlns = "http://www.springframework.org/schema/beans"  xmlns: mvc = "http://www.springframework.org/schema/mvc"  xmlns: xsi = "http: //www.w3 .org / 2001 / XMLSchema-instance "  xmlns: aop = " http://www.springframework.org/schema/aop "  xmlns: context = " http://www.springframework.org/schema/context "  xsi: schemaLocation = "http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans.xsd  http://www.springframework.org/schema/context  http: / /www.springframework.org/schema/context/spring-context.xsd  http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd  http://www.springframework.org/schema/aop  http://www.springframework.org/schema/aop/spring-aop. xsd " >

Команда Spring решила не вводить новую терминологию, относящуюся к АОП; поэтому в справочной документации и API Spring такие термины, как аспект , точка соединения, совет , pointcut, введение, целевой объект ( рекомендованный объект ), прокси AOP и плетение, имеют те же значения, что и в большинстве других фреймворков AOP (особенно AspectJ ).

Структура доступа к данным [ править ]

Инфраструктура доступа к данным Spring решает общие проблемы, с которыми сталкиваются разработчики при работе с базами данных в приложениях. Поддержка предоставляется для всех популярных платформ доступа к данным в Java: JDBC, iBatis / MyBatis , Hibernate , Java Data Objects (JDO, прекращено с 5.x), Java Persistence API (JPA), Oracle TopLink , Apache OJB и Apache Cayenne , среди прочего.

Для всех этих поддерживаемых фреймворков Spring предоставляет следующие функции

  • Управление ресурсами - автоматическое получение и освобождение ресурсов базы данных
  • Обработка исключений - перевод исключения, связанного с доступом к данным, в иерархию доступа к данным Spring
  • Участие в транзакции - прозрачное участие в текущих транзакциях
  • Распаковка ресурсов - получение объектов базы данных из оболочек пула соединений
  • Абстракция для обработки больших двоичных объектов (BLOB) и больших символьных объектов (CLOB)

Все эти функции становятся доступными при использовании классов шаблонов, предоставляемых Spring для каждой поддерживаемой платформы. Критики заявили, что эти классы шаблонов навязчивы и не дают никаких преимуществ перед использованием (например) напрямую Hibernate API. [17] [ неудачная проверка ] В ответ разработчики Spring сделали возможным использование Hibernate и JPA API напрямую. Однако это требует прозрачного управления транзакциями, поскольку код приложения больше не берет на себя ответственность за получение и закрытие ресурсов базы данных и не поддерживает преобразование исключений.

Вместе с управлением транзакциями Spring его структура доступа к данным предлагает гибкую абстракцию для работы со структурами доступа к данным. Spring Framework не предлагает общего API доступа к данным; вместо этого сохраняется вся мощь поддерживаемых API. Spring Framework - единственная платформа, доступная в Java, которая предлагает управляемые среды доступа к данным вне сервера приложений или контейнера. [18]

При использовании Spring для управления транзакциями с Hibernate, возможно, потребуется настроить следующие компоненты:

  • Data Source нравится com.mchange.v2.c3p0.ComboPooledDataSourceилиorg.apache.commons.dbcp.BasicDataSource
  • SessionFactory, как org.springframework.orm.hibernate3.LocalSessionFactoryBeanс атрибутом DataSource
  • Свойства Hibernate, такие как org.springframework.beans.factory.config.PropertiesFactoryBean
  • TransactionManager, как org.springframework.orm.hibernate3.HibernateTransactionManagerс атрибутом SessionFactory

Другие точки настройки включают:

  • Конфигурация точек резания АОП.
  • Транзакционная семантика советов АОП [ пояснить ] .

Управление транзакциями [ править ]

Платформа управления транзакциями Spring привносит в платформу Java механизм абстракции. Его абстракция способна:

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

Для сравнения, Java Transaction API (JTA) поддерживает только вложенные транзакции и глобальные транзакции и требует сервера приложений (а в некоторых случаях также развертывания приложений на сервере приложений).

Spring Framework предоставляет PlatformTransactionManager для ряда стратегий управления транзакциями:

  • Транзакции, управляемые через соединение JDBC
  • Транзакции, управляемые с помощью объектно-реляционного сопоставления Единицы работы
  • Транзакции, управляемые через JTA TransactionManager и UserTransaction
  • Транзакции управляются на других ресурсах, таких как объектные базы данных

Помимо этого механизма абстракции, фреймворк также предоставляет два способа добавления управления транзакциями в приложения:

  • Программно, используя Spring TransactionTemplate
  • Конфигурационно, используя метаданные, такие как аннотации XML или Java (@Transactional и т. Д.)

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

Фреймворк модель – представление – контроллер [ править ]

Презентация Spring MVC / Web Reactive от Юргена Хеллера

Spring Framework имеет собственную структуру веб-приложений модель – представление – контроллер (MVC) , которая изначально не планировалась. Разработчики Spring решили написать свою собственную Web-структуру в ответ на то, что они считали плохим дизайном (тогда) популярной Web-инфраструктуры Jakarta Struts [19], а также недостатками других доступных платформ. В частности, они чувствовали, что не было достаточного разделения между уровнями представления и обработки запросов, а также между уровнем обработки запросов и моделью. [20]

Как и Struts, Spring MVC - это фреймворк на основе запросов. Фреймворк определяет интерфейсы стратегии для всех обязанностей, которые должны выполняться современной фреймворком на основе запросов. Цель каждого интерфейса - быть простым и понятным, чтобы пользователям Spring MVC было легко писать свои собственные реализации, если они того пожелают. MVC прокладывает путь для более чистого внешнего кода. Все интерфейсы тесно связаны с API сервлетов . Эта тесная связь с API сервлетов рассматривается некоторыми как неспособность разработчиков Spring предложить высокоуровневую абстракцию для веб-приложений [ необходима цитата ]. Тем не менее, это соединение гарантирует, что функции API сервлетов остаются доступными для разработчиков, а также предлагает среду с высокой степенью абстракции для облегчения работы с ней.

Класс DispatcherServlet является фронт-контроллером [21] инфраструктуры и отвечает за делегирование управления различным интерфейсам на этапах выполнения HTTP-запроса .

Наиболее важные интерфейсы, определенные Spring MVC, и их обязанности перечислены ниже:

  • Контроллер: находится между моделью и представлением для управления входящими запросами и перенаправления на правильный ответ. Контроллер сопоставит HTTP-запрос с соответствующими методами. Он действует как ворота, которые направляют входящую информацию. Он переключается между переходом в модель или вид.
  • HandlerAdapter: выполнение объектов, обрабатывающих входящие запросы
  • HandlerInterceptor: перехват входящих запросов, сопоставимых, но не равных фильтрам сервлетов (использование не является обязательным и не контролируется DispatcherServlet).
  • HandlerMapping: выбор объектов, которые обрабатывают входящие запросы (обработчики) на основе любого атрибута или условия, внутреннего или внешнего по отношению к этим запросам.
  • LocaleResolver: разрешение и опциональное сохранение локали отдельного пользователя
  • MultipartResolver: упростите работу с загрузкой файлов за счет упаковки входящих запросов
  • Просмотр: отвечает за возврат ответа клиенту. Некоторые запросы могут идти прямо к просмотру, не переходя к части модели; другие могут пройти все три.
  • ViewResolver: выбор представления на основе логического имени для представления (использование строго не требуется)

Каждый интерфейс стратегии выше несет важную ответственность в общей структуре. Абстракции, предлагаемые этими интерфейсами, являются мощными, поэтому, чтобы учесть набор вариаций в их реализациях, Spring MVC поставляется с реализациями всех этих интерфейсов и вместе предлагает набор функций поверх Servlet API. Однако разработчики и поставщики могут писать другие реализации. Spring MVC использует java.util.Mapинтерфейс Java как ориентированную на данные абстракцию для модели, где ключи должны быть строковыми значениями.

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

Рабочий процесс Spring MVC [ править ]

Когда пользователь щелкает ссылку или отправляет форму в своем веб-браузере, запрос отправляется в Spring DispatcherServlet. DispatcherServlet - это фронт-контроллер в Spring MVC. Он обращается к одному или нескольким сопоставлениям обработчиков. DispatcherServlet был выбран в качестве подходящего контроллера и пересылает ему запрос. Контроллер обрабатывает конкретный запрос и генерирует результат. Он известен как Модель. Эта информация должна быть отформатирована в HTML или любой интерфейсной технологии, такой как JSP. Это вид приложения. Вся информация находится в объекте МОДЕЛЬ И ВИД. Когда контроллер не связан с определенным представлением, DispatcherServlet находит фактический JSP с помощью ViewResolver.

Конфигурация DispatcherServlet [ править ]

DispatcherServlet должен быть настроен в web.xml

<servlet>  <servlet-name> MyServlet </servlet-name>  <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> </servlet><servlet-mapping>  <servlet-name> MyServlet </servlet-name>  <url-pattern> / <url-pattern> </servlet-mapping>

Платформа удаленного доступа [ править ]

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

Платформа также обеспечивает восстановление после сбоев (автоматическое переподключение после сбоя соединения) и некоторые оптимизации для использования на стороне клиента удаленных сессионных компонентов EJB без сохранения состояния .

Spring обеспечивает поддержку этих протоколов и продуктов из коробки.

  • Протоколы на основе HTTP
    • Hessian : протокол двоичной сериализации, открытый исходный код и поддерживаемый протоколами на основе CORBA
    • RMI (1): вызовы методов с использованием инфраструктуры RMI, но специфичной для Spring
    • RMI (2): вызовы методов с использованием интерфейсов RMI, соответствующих обычному использованию RMI
    • RMI-IIOP ( CORBA ): вызовы методов с использованием RMI-IIOP / CORBA
  • Интеграция клиента Enterprise JavaBean
    • Подключение к локальным сессионным компонентам EJB без сохранения состояния: подключение к локальным сеансовым компонентам без сохранения состояния
    • Подключение к удаленным сессионным компонентам без сохранения состояния EJB: подключение к удаленным сеансовым компонентам без сохранения состояния
  • МЫЛО
    • Интеграция со структурой веб-сервисов Apache Axis

Apache CXF обеспечивает интеграцию со Spring Framework для экспорта объектов в стиле RPC на стороне сервера.

Настройка и клиента, и сервера для всех протоколов и продуктов в стиле RPC, поддерживаемых средой удаленного доступа Spring (за исключением поддержки Apache Axis), настраивается в контейнере Spring Core.

Существует альтернативная реализация с открытым исходным кодом (Cluster4Spring) подсистемы удаленного взаимодействия, включенная в Spring Framework, которая предназначена для поддержки различных схем удаленного взаимодействия (1-1, 1-многие, обнаружение динамических сервисов)…

Быстрая разработка приложений без изменения конфигурации [ править ]

Spring Boot [ править ]

Spring загрузочный в Spring условности поверх конфигурации решение для создания приложений автономный, производственно-класс Пружинной основы , что вы можете «просто работать». [22] Он предварительно сконфигурирован с учетом «самоуверенного взгляда» команды Spring на лучшую конфигурацию и использование платформы Spring и сторонних библиотек, поэтому вы можете начать работу с минимумом хлопот. Большинству приложений Spring Boot требуется очень небольшая настройка Spring. Функции:

  • Создавайте автономные приложения Spring
  • Встраивайте Tomcat или Jetty напрямую (не нужно развертывать файлы WAR )
  • Предоставьте самоуверенные 'стартовые' объектные модели проекта (POM), чтобы упростить настройку Maven
  • Автоматически настраивать Spring, когда это возможно
  • Предоставление готовых к работе функций, таких как показатели , проверки работоспособности и внешняя конфигурация
  • Абсолютно без генерации кода и без требований к конфигурации XML.

Spring Roo [ править ]

Spring Roo - это проект сообщества, который предоставляет альтернативный подход, основанный на генерации кода, при использовании соглашения по конфигурации для быстрого создания приложений на Java . В настоящее время он поддерживает Spring Framework, Spring Security и Spring Web Flow . Roo отличается от других сред быстрой разработки приложений тем, что уделяет особое внимание:

  • Расширяемость (через надстройки)
  • Производительность платформы Java (в отличие от других языков)
  • Избежание блокировки (Roo можно удалить в течение нескольких минут из любого приложения)
  • Избегание времени выполнения (с соответствующими преимуществами развертывания)
  • Удобство использования (особенно с помощью функций оболочки и шаблонов использования)

Пакетная структура [ править ]

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

  • ведение журнала / отслеживание
  • управление транзакциями
  • статистика обработки вакансий
  • перезапуск задания

Он также предоставляет более продвинутые технические услуги и функции, которые позволят выполнять чрезвычайно большие объемы и высокопроизводительные пакетные задания за счет оптимизации и методов разделения. Spring Batch выполняет ряд заданий; задание состоит из множества шагов, и каждый шаг состоит из задачи READ-PROCESS-WRITE или отдельной операции (тасклета).

Процесс «ЧТЕНИЕ-ПРОЦЕСС-ЗАПИСЬ» состоит из следующих шагов: «чтение» данных из ресурса ( значения, разделенные запятыми (CSV), XML или база данных), «обработка» их, затем «запись» в другие ресурсы ( CSV, XML или база данных). Например, шаг может считывать данные из файла CSV, обрабатывать их и записывать в базу данных. Spring Batch предоставляет множество классов для чтения / записи CSV, XML и базы данных.

Для «одиночной» задачи операции (тасклета) это означает выполнение только одной задачи, например, очистка ресурсов до или после запуска или завершения шага.

Шаги можно объединить в цепочку для выполнения как задания.

Платформа интеграции [ править ]

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

  • маршрутизаторы - направляет сообщение в канал сообщений в зависимости от условий
  • трансформеры - конвертирует / преобразует / изменяет полезную нагрузку сообщения и создает новое сообщение с преобразованной полезной нагрузкой
  • адаптеры - для интеграции с другими технологиями и системами (HTTP, AMQP (Advanced Message Queuing Protocol), JMS (Java Message Service), XMPP (Extensible Messaging and Presence Protocol), SMTP (Simple Mail Transfer Protocol), IMAP (Internet Message Access Protocol) ), FTP (протокол передачи файлов), а также FTPS / SFTP , файловые системы и т. Д.)
  • фильтры - фильтрует сообщение по критериям. Если критерии не соблюдены, сообщение отбрасывается.
  • активаторы службы - вызывают операцию над объектом службы
  • менеджмент и аудит

Spring Integration поддерживает архитектуры на основе конвейеров и фильтров.

См. Также [ править ]

  • Гобелен Apache
  • Google Guice
  • Hibernate (фреймворк)
  • Список фреймворков Java
  • Сравнение веб-фреймворков

Ссылки [ править ]

  1. ^ "Выпуск 5.3.1" . 10 ноября 2020 . Проверено 18 декабря 2020 .
  2. ^ Победители Jolt 2006
  3. ^ "Премия JAX Innovation Award Gewinner 2006" . Архивировано из оригинала на 2009-08-17 . Проверено 12 августа 2009 .
  4. ^ «Выпущен Spring Framework 3.2.5» . Официальный сайт Spring . 7 ноя 2013 . Дата обращения 16 октября 2016 .
  5. ^ SpringSource.org
  6. ^ Официальный блог Spring
  7. ^ Официальный блог Spring
  8. ^ Блог о весеннем выпуске
  9. ^ Официальный блог Spring
  10. ^ Реактивная пружина
  11. ^ Документация Spring Framework для основного контейнера
  12. ^ В чем разница между depencylookup и внедрением зависимостей - Spring Forum . Forum.springsource.org (28 октября 2009 г.). Проверено 24 ноября 2013.
  13. ^ Весна VS EJB3
  14. ^ "Вилы FAQ" . Проверено 6 июня 2006 .
  15. ^ Конфигурация Spring AOP XML
  16. ^ Конфигурация аннотации AspectJ
  17. ^ Гибернация против весны
  18. ^ «Spring Data JPA для абстракции запросов» . Проверено 6 февраля 2018 .
  19. ^ Введение в Spring Framework
  20. Перейти ↑ Johnson, Expert One-on-One J2EE Design and Development, Ch. 12. et al.
  21. ^ Шаблоны архитектуры корпоративных приложений: Front Controller
  22. ^ Spring Boot

Библиография [ править ]

  • Мак, Гэри (1 сентября 2010 г.). Весенние рецепты: подход к решению проблемы (второе изд.). Апресс . п. 1104. ISBN 1-4302-2499-1.
  • Стены, Крейг (28 ноября 2010 г.). Весна в действии (Третье изд.). Мэннинг . п. 700. ISBN 1-935182-35-8.
  • Стены, Крейг; Брейденбах, Райан (16 августа 2007 г.). Весна в действии (второе изд.). Мэннинг . п. 650 . ISBN 1-933988-13-4.
  • Джонсон, Род; Хёллер, Юрген; Арендсен, Алеф; Рисберг, Томас; Сампалеану, Колин (8 июля 2005 г.). Профессиональная разработка на Java с помощью Spring Framework (первое издание). Wrox Press . п. 672. ISBN. 0-7645-7483-3.
  • Харроп, Роб; Machacek, янв (31 января 2005 г.). Pro Spring (Первое изд.). Апресс . п. 832. ISBN 1-59059-461-4.
  • Джонсон, Род; Юрген, Хёллер (23 октября 2002 г.). Разработка J2EE без EJB (Первое изд.). Wrox Press . п. 768. ISBN 0-7645-5831-5.
  • Джонсон, Род (октябрь 2002 г.). Эксперт One-on-one J2EE Design and Development (Первое издание). Wrox Press . п. 750 . ISBN 0-7645-4385-7.
  • Поллак, Марк; Гирке, Оливер; Рисберг, Томас; Брисбин, Джон; Голод, Майкл (31 октября 2012 г.). Spring Data (Первое издание). О'Рейли . п. 316. ISBN 978-1449323950.
  • Зарин, Ашиш (27 июня 2016 г.). Начало работы со Spring Framework (третье изд.). Самостоятельно опубликовано . п. 626. ISBN. 978-1534985087.
  • Лонг, Джош (27 августа 2013 г.). Spring Framework LiveLessons (Первое издание). Эддисон-Уэсли Профессионал . стр. 4+ часов. ISBN 978-0-13-346307-1.

Внешние ссылки [ править ]

  • Официальный веб-сайт