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
-
Удалить устаревшие пакеты и методы
Необязательные сторонние зависимости были увеличены до минимума 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, и всегда будет видение. Когда мы используем весну все более и более просто, кризис приближается шаг за шагом, смотрите на внешний вид, идите дальше, идите дальше!