Серия исходных кодов Spring: изменения версии Spring

Java Spring MVC модульный тест

Spring — это среда разработки с открытым исходным кодом, которая решает проблему слабой связи между уровнем бизнес-логики и другими уровнями, поэтому она применяет идею ориентированного на интерфейс программирования во всем системном приложении. Spring — это облегченная среда разработки Java, появившаяся в 2003 году и созданная Родом Джонсоном. Короче говоря, Spring — это многоуровневый JavaSE/EEfull-stack (универсальный) облегченный фреймворк с открытым исходным кодом [из энциклопедии Baidu].

На данный момент Spring развился до версии 5.0.4.Сегодня поговорим о том, какие новые возможности предоставляет каждая версия Spring.

spring 2.x

Spring 2.x включает в себя следующие два:

  • 2.0.0-2.0.8
  • 2.5.0-2.5.6 В это время весна еще очень молода, и включено не так много модулей. Как показано ниже:

2.0 Новые возможности

  • Появление нового синтаксиса конфигурации XML для XML-схемы

  • Объем новой фасоли

    Предыдущие версии Spring поддерживали две разные области действия bean-компонента (singleton и прототип) на уровне контейнера IoC. Spring 2.0 улучшает это, предоставляя не только некоторые дополнительные области в зависимости от среды, в которой развернут Spring (например, bean-компоненты с областью запроса и сеанса в веб-среде, но и «хуки»), позволяя пользователям Spring создавать свой собственный диапазон . Следует отметить, что хотя базовая (и внутренняя) реализация bean-компонентов с областью действия singleton и прототипа изменилась, указанные изменения полностью прозрачны для конечного пользователя... нет необходимости изменять существующую конфигурацию, и существующая конфигурация не будет изменена. прервано.

  • Расширяемый XML

  • Поддержка аспектов @AspectJ

  • Упрощенная конфигурация XML (аоп и транзакции)

  • Асинхронный JMS

  • Библиотека тегов форм для Spring MVC

  • Поддержка Java 5 (тигр)

  • Spring 2.0 теперь поддерживает bean-компоненты, написанные на языках, отличных от Java, в настоящее время поддерживаются динамические языки: JRuby, Groovy и BeanShell.

  • Предоставляет абстракцию о планировании задач

  • Введена поддержка различных аннотаций для целей настройки, таких как @Transactional, @Required и @PersistenceContext/@PersistenceUnit.

2.5 Новые функции

  • После глубокой поддержки Java 5 в Spring 2.0 во всей структуре, Spring 2.5 представляет специальную поддержку Java 6.

  • @Autowired сочетает в себе поддержку аннотаций JSR-250 @Resource, @PostConstruct и @PreDestroy.

  • Автоматически обнаруживать компоненты в пути к классам

    В Spring 2.5 появилась поддержка сканирования компонентов: автоматическое обнаружение аннотированных компонентов в пути к классам. Как правило, такие классы компонентов будут аннотированы стереотипами, такими как @Component, @Repository, @Service, @Controller. В зависимости от конфигурации контекста приложения эти классы компонентов будут автоматически обнаружены и преобразованы в определения bean-компонентов Spring без необходимости явной настройки для каждого такого bean-компонента.

  • Поддержка элементов pointcut имени компонента

    Spring 2.5 представил поддержку элемента bean(...) pointcut для соответствия конкретному именованному компоненту на основе имени компонента, определенного Spring.

  • Поддержка плетения AspectJ во время загрузки

  • Spring 2.5 значительно расширяет функциональность SimpleJdbcTemplate и представляет объекты операции SimpleJdbcCall и SimpleJdbcInsert.

  • Контроллер на основе аннотаций.

    Spring 2.5 представила модель программирования на основе аннотаций для контроллеров MVC с использованием таких аннотаций, как @RequestMapping, @RequestParam, @ModelAttribute и т. д. Эта поддержка аннотаций доступна для Servlet MVC и Portlet MVC. Контроллеры, реализованные в этом стиле, не должны расширять определенный базовый класс или реализовывать определенный интерфейс. Кроме того, они обычно не зависят напрямую от API сервлета или портлета, хотя могут легко получить доступ к средствам сервлета или портлета.

  • Представлен фреймворк Spring TestContext.

Spring 3.x

Spring 3.x включает в себя следующие серии:

  • 3.0.0-3.0.7
  • 3.1.0-3.1.4
  • 3.2.0-3.2.18

Расширены новые модули на странице модуля 2.x.

3.0.x Новые функции

  • Core API обновлен для Java 5
  • язык весенних выражений
  • Метаданные бина на основе Java и определение метаданных бина в компонентах
  • Универсальная система преобразования и система форматирования полей
  • Комплексная поддержка REST
  • Декларативная проверка модели
  • Ранняя поддержка Java EE 6
  • Поддержка встроенных баз данных

3.1.x Новые функции

  • абстракция кэша

  • Файл конфигурации определения компонента

  • экологическая абстракция

  • Абстракция источника свойств

  • Кодовый эквивалент пространства имен Spring XML

  • Поддержка спящего режима 4.x

  • Платформа TestContext поддерживает классы @Configuration и файлы конфигурации определения компонентов.

  • Более краткие пространства имен внедрения конструктора

  • Поддержка внедрения для нестандартных сеттеров JavaBeans

  • Поддержка конфигурации контейнера сервлетов на основе кода Servlet 3.

  • Поддержка Servlet 3 MultipartResolver

  • Начальная загрузка JPA EntityManagerFactory без файла persistence.xml

  • Новый класс поддержки на основе HandlerMethod для обработки аннотированных контроллеров.

  • Атрибуты Flash и RedirectAttributes (поддержка параметра перенаправления запроса)

  • "consumes" and "produces" conditions in @RequestMapping

    Улучшена поддержка типов мультимедиа, используемых с помощью метода, указанного в заголовке «Content-Type», и генерируемых типов, указанных с помощью заголовка «Accept».

  • Усовершенствования переменных шаблона URI

  • @Valid для параметров метода контроллера @RequestBody

  • Аннотация @RequestPart к параметру метода контроллера

  • UriComponentsBuilder и UriComponents

3.2.x Новые функции

  • Поддержка асинхронной обработки запросов на основе Servlet 3
  • Фреймворк для тестирования Spring MVC
  • Аннотация @ControllerAdvice
  • Абстрактный базовый класс для инициализации контейнера Servlet 3+ на основе кода
  • Представлен класс ResponseEntityExceptionHandler
  • Общие типы поддерживаются для параметров @RequestBody в RestTemplate и
  • JackJSON 2 и связанные с ним улучшения
  • @RequestBody улучшения
  • Метод HTTP PATCH
  • Мета-аннотации с использованием точек аннотаций и методов определения bean-компонентов
  • Предварительная поддержка JCache 0.5
  • Глобальные форматы даты и времени
  • Параллельная оптимизация всего фреймворка
  • Новая сборка на основе Gradle и переход на GitHub
  • Усовершенствованная поддержка Java SE 7 / OpenJDK 7

Spring 4.x

Spring 4 включает в себя следующие серии версий:

  • 4.0.0-4.0.9
  • 4.1.0-4.1.9
  • 4.2.0-4.2.9
  • 4.3.0-4.3.13

Новые возможности весны 4.0.x

  • Удалить устаревшие пакеты и методы

    Необязательные сторонние зависимости были увеличены до минимума 2010/2011 (то есть Spring 4 обычно поддерживает только версии, выпущенные в конце 2010 года или позже): в частности, Hibernate 3.6+, EhCache 2.1+, Quartz 1.8+, Groovy 1.8+ и Joda -Time. 2.0+. В качестве исключения из правил для Spring 4 требуется недавний Hibernate Validator 4.3+, а поддержка Jackson сосредоточена выше 2.0+ (в настоящее время Spring 3.2 сохранил поддержку Jackson 1.8/1.9; сейчас он просто устарел).

  • Java 8 (и 6 и 7)

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

  • Java EE 6 и 7

    Java EE 6 или более поздней версии теперь считается базовой версией для Spring Framework 4, при этом особенно важны спецификации JPA 2.0 и Servlet 3.0. Для обеспечения совместимости с Google App Engine и старыми серверами приложений приложения Spring 4 можно развернуть в среде Servlet 2.5. Однако настоятельно рекомендуется использовать Servlet 3.0+, который является обязательным условием в тестовом и макетном пакете тестовой установки в среде разработки Spring.

  • Groovy Bean Определение DSL

  • Основные улучшения контейнера

    • Spring теперь принимает универсальные типы как форму квалификатора при внедрении bean-компонентов. Например, если вы используете Spring Data Repository, теперь вы можете легко внедрить конкретную реализацию: @Autowired Repository customerRepository.
    • Если вы используете поддержку мета-аннотаций Spring, теперь можно разрабатывать собственные аннотации для отображения определенных свойств в исходных аннотациях.
    • Компоненты теперь можно сортировать при автосвязывании в списки и массивы. Поддерживаются как выноски, так и интерфейсы. @OrderOrdered
    • Аннотацию @Lazy теперь можно использовать в точках внедрения, а также в определениях @Bean.
    • Аннотация @Description была введена для разработчиков, использующих конфигурацию на основе Java.
    • Общая модель для условной фильтрации bean-компонентов была добавлена ​​через аннотацию @Conditional. Это похоже на поддержку @Profile, но позволяет программно разрабатывать определяемые пользователем политики.
    • Прокси-классы на основе CGLIB больше не требуют конструктора по умолчанию. Поддержка предоставляется путем предоставления objenesis с его библиотекой переупаковки онлайн и как часть Spring Framework. При использовании этой стратегии все конструкторы больше не вызываются для экземпляра прокси.
    • Вся структура теперь поддерживает управление часовыми поясами, например LocaleContext.
  • поддержка веб-модуля

    • Новую аннотацию @RestController можно использовать в приложениях Spring MVC без добавления @ResponseBody к каждому методу @RequestMapping.
    • Был добавлен AsyncRestTemplate, чтобы обеспечить асинхронную неблокирующую поддержку при разработке клиентов REST.
    • Полная поддержка часовых поясов предоставляется при разработке приложений Spring MVC.
  • Тестовые улучшения

  • Обмен сообщениями WebSocket, SockJS и STOMP

Новые возможности весны 4.1.x

  • Улучшения JMS
  • улучшения кеша
  • улучшения сети
  • Улучшения обмена сообщениями WebSocket
  • Тестовые улучшения

Новые возможности весны 4.2.x

Весна 4 Официальная документация

  • Основные улучшения контейнера
  • Улучшения доступа к данным

Новые возможности весны 4.3.x

  • Поддержка новых пакетов и услуг
  • Связанные улучшения

Я еще не использовал spring5, и всегда будет видение. Когда мы используем весну все более и более просто, кризис приближается шаг за шагом, смотрите на внешний вид, идите дальше, идите дальше!