Spring Boot 2.0 официально выпущен, нужно ли его обновлять или нет?

Spring Boot Java Spring Безопасность

Весенняя Империя

Spring — это среда разработки, с которой знаком почти каждый разработчик Java.Будь вы начинающий программист или опытный водитель, у вас будут некоторые знания или опыт ее использования. В современной архитектуре приложений корпоративного уровня стек технологий Spring стал почти синонимом языка Java, так почему же Spring может выделиться среди множества фреймворков с открытым исходным кодом и стать единогласно признанным техническим решением в отрасли? Давайте начнем с оригинальной Spring Framework и посмотрим, почему она может сметать армию и править реками и озерами!

Бросьте вызов авторитету и станьте знаменитым

В марте 2004 года была выпущена первая версия Spring и классический шедевр ее основателя Рода Джонсона «Экспертная разработка J2EE один на один без EJB», который нарушил традиционный способ мышления в области разработки Java в то время и приложений корпоративного уровня. начал двигаться в сторону темпов «облегченной» разработки.

Первоначальная версия Spring Framework 1.0 не так сложна, как сегодняшняя Spring, но эта версия уже содержит два основных элемента Spring: внедрение зависимостей и аспектно-ориентированное программирование.Эти две функции отличают Spring от других превосходных фреймворков.И ключ к созданию ядра позиции в корпоративных приложениях. Многим разработчикам может показаться, что эти две функции не имеют большого значения, когда они впервые участвуют в Java-приложениях, потому что мы все еще можем хорошо реализовывать бизнес-функции без них.Это действительно так, но с итерацией и углубленным развитием бизнеса, сложные и изменчивые требования начали медленно разрушать первоначальную «идеальную» архитектуру, а сложность разработки и тестирования постепенно увеличивалась.Часто в это время мы осознаем ценность Spring. Поэтому даже в начальной версии Spring инкапсулированы многие бизнес-ориентированные функциональные пакеты, такие как: отправка почты, управление транзакциями и т. д., но нам нужно знать, что причина, по которой приложения уровня предприятия неотделимы от Spring, не что они напрямую связаны с бизнес-функциями, но два ядра, упомянутые выше, не имеют ничего общего с бизнес-реализацией.

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

Элегантный и гибкий, привлекающий бесчисленное количество пудры

После того, как Spring был выпущен и получил широкое признание в отрасли, сообщество открытого исходного кода Spring стало очень активным.Помимо постоянного улучшения Spring самим сообществом, другие функциональные фреймворки также адаптировали и поддерживали Spring. В последующем выпуске Spring 2.x и 3.x последовательно поддерживаются элегантная конфигурация Annotation и конфигурация более гибких классов Java, что делает Spring более диверсифицированным в настройке bean-компонентов управления.

Однако с углубленным применением Spring начали появляться утомительные проблемы с конфигурацией. Мы обнаружим, что каждый раз, когда мы создаем проект, мы всегда копируем и вставляем некоторые шаблонные конфигурации и коды. Иногда мы просто хотим достичь нескольких Это очень простая функция, и в результате конфигурационного содержания намного больше, чем написание кода бизнес-логики, в то же время в процессе интеграции фреймворка существует потенциальный риск конфликта для некоторых совместно зависимых Jar-пакетов , что усложняет некоторые сложные задачи интеграции. Поэтому «легкий» Spring не такой легкий по сравнению с другими динамическими языками.

Мастер колеса, неопределенное будущее

В последующем Spring 4.x, помимо обеспечения поддержки Java 8 и улучшений для внедрения зависимостей, в течение длительного времени инновации сообщества Spring в его основной структуре не были столь блестящими, и сообщество начало сосредотачивать больше энергии. Обращение копья к тем, кто раньше был близким другом. В результате мы обнаружили в сообществе Spring различные функциональные родственные проекты, такие как: Spring Data для упрощения доступа к данным, Spring Batch для предоставления возможностей пакетной обработки и Spring Security для защиты безопасности приложений.

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

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

Бог-солдат родился, создавая большую славу

1 апреля 2014 года Spring Boot выпустила свою первую официальную версию. Проект направлен на то, чтобы упростить разработчикам создание приложений и сервисов на основе Spring, позволяя существующим и новым разработчикам Spring быстрее всего получать необходимые им функции Spring. Он разрабатывался почти 4 года, пока сегодня не была выпущена версия 2.x Spring Boot уже является суперпопулярным проектом с открытым исходным кодом с более чем 21 000 звезд, более 15 000 коммитов и более 400 участников.

Почему Spring Boot вдруг вызывает столько внимания и уважения? Основные моменты заключаются в следующем:

  • Упрощенное управление зависимостями: в Spring Boot предоставляется ряд начальных POM, которые разделяют и инкапсулируют различные функциональные модули, упрощая внедрение и использование, эффективно избегая обслуживания при создании традиционных приложений Spring. Такие проблемы, как конфликты JAR, вызванные большим количество зависимостей.
  • Автоматическая настройка: Spring Boot предоставляет класс автоматической настройки Java для каждого Starter, который используется для замены громоздкой и не очень меняющейся конфигурации Bean в XML наших традиционных приложений Spring; в то же время, с помощью ряда условных аннотаций украшение, мы также можем легко заменить эти автоматически настроенные bean-компоненты для расширения.
  • Встроенный контейнер: в дополнение к оптимизации организации кода, встроенный контейнер, поддерживаемый в Spring Boot, также является отличной изюминкой (здесь я, кажется, слышу предложение Джоша Лонга: «Развертывание как Jar, а не война»), что делает упаковку и запуск приложений Spring Boot очень легкий.
  • Конечные точки мониторинга производственного уровня:spring-boot-starter-actuatorЗапуск Spring Boot можно назвать еще одним важным нововведением Spring Boot на основе Spring, которое делает разработку приложений Spring более совершенной. Этот модуль не помогает нам реализовать какие-либо бизнес-функции, но дает нам больше поддержки на уровне эксплуатации и обслуживания архитектуры.Через интерфейс HTTP, предоставляемый этим модулем, мы можем легко понять и контролировать работу приложений Spring Boot.

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

Spring Boot 2.0 грядет, обновление или нет?

Долгожданная версия Spring Boot 2.0 наконец-то выпустила свою первую официальную версию Почему так ждут Spring Boot 2.0? Я думаю, что основные причины следующие:

  1. Поддержка последних Java 9
  2. На основе Spring 5 все новые функции Spring можно использовать в Spring Boot 2.0.
  3. Обеспечивает автоматическую настройку для реактивного программирования различных компонентов, таких как: Reactive Spring Data, Reactive Spring Security и т. д.
  4. Неблокирующая альтернатива Spring MVC, поддерживающая WebFlux и встроенный сервер Netty.
  5. С выпуском Spring Boot 2.0 сильно ли отстанет Spring Cloud Finchley?

Содержимое, перечисленное выше, является основным содержанием основной проблемы автора, а не всеми новыми функциями Spring Boot 2.0, и я полагаю, что у разных пользователей будут разные проблемы. Кроме того, в Spring Boot 2.0 есть много других интересных новых функций, таких как: поддержка HTTP/2, добавление более гибкого API привязки свойств (вы не можете передать@ConfigurationProperties注解就能实现配置内容读取和使用)、对Spring Security整合的简化配置、Gradle插件的增强、Actuator模块的优化等等。 This article does not introduce these new features in detail. The following mainly talks about whether it is necessary for us to upgrade our Spring Boot 1.x to Spring Boot 2.x, and what problems we need to consider and pay attention to in this обработать.

Изменения в требованиях к версии Java

Когда мы выбираем, стоит ли обновлять Spring Boot, первое, что нам нужно учитывать, — это выбор версии Java. В Spring Boot 2.0 требования к версии Java были увеличены, нам нужно использовать как минимум Java 8, чтобы использовать его, и если ваше приложение Spring Boot все еще работает на Java 7, вам необходимо учитывать стоимость обновления Java.

Кроме того, от того, хотите ли вы использовать Java 9 в будущем, будет зависеть принятие решения об обновлении или отказе, поскольку в выпусках Spring Boot 1.x прямо указано, что поддержка Java 9 не планируется; другими словами, если вы хотите запустите Spring Boot на Java 9, вы должны перейти на Spring Boot 2.0.

Советы. Хотя текущая версия Spring Boot 2.0 поддерживает Java 9, все же есть некоторые проблемы. Например: для поддержки прокси-сервера JDK требуется AspectJ 1.9, но эта версия все еще находится в версии RC; Apache Cassandra еще не поддерживается; TLD JSP не могут поддерживаться во встроенном Tomcat и т. д. Конкретные решения этих проблем см.Running Spring Boot on Java 9

Обновление зависимых компонентов

Spring Boot's Starter объединяет множество отличных сторонних компонентов.Обновление этих компонентов также требует от нас принятия определенных соображений.Во ​​время процесса обновления версии этих компонентов, есть ли изменения в использовании и другие проблемы. Среди них наиболее важные компоненты требуют нашего внимания:

  • Обновление Томката до 8.5
  • Обновление пролетного пути до 5
  • Обновление спящего режима до 5.2
  • Обновление Тимелеафа до 3

Советы: несколько дней назад была обнаружена проблема уязвимости Tomcat. После исследования для Spring Boot 2.0 была выбрана версия 8.5.28, которая является безопасной версией, поэтому вы можете с уверенностью ее использовать.

Реорганизация зависимостей и перемещение конфигурации

В процессе обновления Spring Boot 2.0 эта часть контента может быть тем местом, где вам нужно внести дополнительные изменения, поэтому рекомендуется следить за этим здесь. Поскольку Spring Boot не является структурой плоского уровня при создании POM Starter, между некоторыми функциональными модулями Starter существует ссылочная связь, например: spring-boot-starter-thymeleaf содержит spring-boot-starter-web, поскольку механизм шаблонов раньше использовались в Spring MVC. Однако в Spring Boot 2.0 появление WebFlux больше не будет единственным решением для веб-приложений, поэтому зависимости в spring-boot-starter-thymeleaf больше не включают spring-boot-starter-web, и разработчикам нужно добавить spring сами по себе -boot-starter-web или spring-boot-starter-webflux, чтобы решить, какой модуль использовать для реализации веб-приложения.

В дополнение к реорганизации зависимостей, аналогичной описанной выше, в Spring Boot 2.0 также существует множество перемещений свойств конфигурации, что приведет к тому, что некоторые исходные конфигурации больше не будут действовать, и нам нужно вручную изменить ключи этих конфигураций, чтобы завершить обновление, адаптация. Например, некоторые связанные с сервлетамиserver.*Перемещение атрибутаserver.servletПод префиксом:

Old property New property
server.context-parameters.* server.servlet.context-parameters.*
server.context-path server.servlet.context-path
server.jsp.class-name server.servlet.jsp.class-name
server.jsp.init-parameters.* server.servlet.jsp.init-parameters.*
server.jsp.registered server.servlet.jsp.registered
server.servlet-path server.servlet.path

Для получения дополнительных сведений об изменениях зависимостей, перемещении конфигурации и изменениях конфигурации по умолчанию читатели могут обратиться к официальному руководству по обновлению:Spring Boot 2.0 Migration Guide

ненужные заботы

там был другspring4allСообщество задалось вопросом: если Spring Boot обновится до версии 2.0, а в версии 2.0 будет так много новых функций, нужно ли будет также модифицировать наш бизнес-код, и будет ли велик риск? На самом деле, вам не нужно слишком беспокоиться об этой проблеме.Хотя Spring Boot 2.0 добавил много новых мощных функций, поддержка исходных функций не была прекращена. Поэтому, даже если мы не будем использовать какие-либо новые функции, такие как WebFlux, после обновления проекта до Spring Boot 2.0 это не повлияет на продолжение использования Spring MVC для разработки нашего проекта. Однако, как упоминалось выше, нам может потребоваться внести некоторые зависимости и корректировки конфигурации, чтобы продолжить нормальную работу приложения.

Резюме и перспективы

Спасибо, что прочитали мои краткие комментарии о Spring Boot 2.0 выше.Я надеюсь, что это содержание может иметь некоторую справочную ценность для вашего выбора Spring Boot 2.0. Хотя эта версия не меняет нашего понимания громоздких приложений Spring, таких как Spring Boot 1.0, она по-прежнему показывает многое из того, что было в прошлом. В то же время выпуск Spring Boot 2.0 также означает, что официальный выпуск Spring Cloud Finchley стал на один шаг ближе, потому что эта версия также принесет много интересного контента, я верю, что этот день не за горами!

Для текущей миграции и обновления Spring Boot 2.0, как верный сторонник Spring Boot и Spring Cloud, если позволяет время, это неизбежная попытка В будущем я сделаю все возможное, чтобы я надеюсь найти время, чтобы продолжаем делиться некоторыми проблемами и достижениями, и делимся с вами!

Следуйте за мной: http://blog.didispace.com/

использованная литература