关于springboot:聊聊Spring-Boot几个版本的区别

38次阅读

共计 3519 个字符,预计需要花费 9 分钟才能阅读完成。

本文次要钻研一下 Spring Boot 2.7, 3.x 这几个版本的区别

Spring Boot 2

Spring Boot 2.0 在 2018 年 2 月 28 日公布,Spring Boot 2.7 是 2.x 的最初一个公布版本,该版本的开源将于 2023 年 11 月进行反对,商业反对可延长到 2025 年 2 月

从 2.6 迁徙到 2.7

  • flyway 从 8.0 更新到了 8.5
  • H2 更新到了 2.1.120
  • MSSQL driver 从 v9 更新到了 v10
  • OkHttp3 将不再反对,改为反对 OkHttp4
  • embedded mongo3.4 不再反对
  • Hazelcast 3.0 不再被反对
  • camelCase 格调的 metric tag 将被重命名到 lower-case 并且以. 来宰割
  • 降级 Spring Security 到 5.7 版本,废除了 WebSecurityConfigurerAdapter
  • requestMappingHandlerMapping 这个 bean 不再被标记为 @Primary,因而注入的时候能够应用List<RequestMappingHandlerMapping>
  • MySQL JDBC driver 的 8.0.31 的坐标是 com.mysql:mysql-connector- j 以及 mysql:mysql-connector-java,然而从 8.0.32 开始只公布到了 com.mysql:mysql-connector- j 这个坐标,而 Spring Boot2.7.8 版本更新该依赖到 8.0.32 版本
  • auto-configuration 和 management context 的发现机制产生了变动,它们不在 spring.factories 中注册了,改为在 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 以及 META-INF/spring/org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration.imports 中申明,而且之前的逗号分隔改为换行分隔
  • 新引入了 @AutoConfiguration 注解,用于顶级的 auto-configuration,如果是内嵌的或者是被 @AutoConfiguration 注解的 class 援用的则持续应用 @Configuration 注解
  • maven 和 gradle 插件当初都反对了 Podman
  • auto-configuration 新增了对 Cache2k 的反对

Spring Boot 3

  • Spring Boot 3 版本于 2022 年 11 月 24 日公布,它是 Spring Boot 的下一个大版本,基于 Spring Framework 6.0,而且要求 Java 最低版本为 Java17。
  • Spring Framework 6.0 于 2022 年 11 月 16 日公布,是 Spring Framework 的下一个大版本,该版本要求 Java 最低版本为 Java17,而且迁徙到了 Jakarta EE 9+ 版本,应用了 jakarta.* 替换掉了javax.*,反对了 Tomcat 10.1,Hibernate ORM 6.1。另外开始反对 AOT 编译以及后续公布的协程。
  • Jakarta EE 10 应用了 Servlet 6.0 及 JPA 3.1 标准
  • 不再反对 Image Banner
  • 日志的日期格局从以前的 yyyy-MM-dd HH:mm:ss.SSS 变更为 yyyy-MM-dd’T’HH:mm:ss.SSSXXX,能够应用logging.pattern.dateformat 属性进行更改
  • 不再反对 auto-configuration 注册到 spring.factories
  • 尾斜杠默认不被反对,如果没有显式指定将返回 404,能够通过 configurer.setUseTrailingSlashMatch(true)来开启
  • server.max-http-header-size 被废除,改为应用 server.max-http-request-header-size
  • actuator endpoints 开启加密机制,默认连 key 也会被加密,能够通过 management.endpoint.env.show-values 及 management.endpoint.configprops.show-values 来进行配置

legacy application.propertis

Spring Boot 2.4 版本变更了 application.properties 以及 application.yaml 的加载形式,能够通过设置 spring.config.use-legacy-process 为 true 来复原以前的行为,不过在 3.0 版本 legacy 的解决形式不再被反对

如果仅仅是简略的 application.properties 以及 application.yaml,则该变动没有影响,影响到的是带 profile 的写法
具体见 Spring Boot Config Data Migration Guide

PathPatternParser

Spring MVC 提供了 AntPathMatcher 及 PathPatternParser 两种解析 pattern 的形式,在 2.6 版本默认应用 PathPatternParser,通过 spring.mvc.pathmatch.matching-strategy 能够去扭转,后续举荐应用 PathPatternParser,因为它的性能更好。

spring-boot-properties-migrator

Spring Boot 3.0 版本重命名或者移除了一些配置属性,能够通过 spring-boot-properties-migrator 来剖析和兼容

Spring Cloud 版本

Hoxton 版本之后采纳日期的命名形式

Spring Cloud 2020.0(Ilford 版本)

  • 从 2020.0.0 到 2020.0.6 一共公布了 7 个版本,其中 2020.0.2 要求 Spring Boot 2.4.3 版本
  • 这个版本次要是从 spring-cloud-netflix 移除了一些组件,比方 ribbon,hystrix,turbine
  • 兼容 Spring Boot 2.4.x 及 2.5.x 版本

Spring Cloud 2021.0(Jubilee 版本)

  • 从 2021.0.0 到 2021.0.7 一共公布了 8 个版本
  • 从 2021.0.3 版本开始次要是兼容 Spring Boot 2.7.0 及 2.6.x 版本

Spring Cloud 2022.0(Kilburn 版本)

  • 要求 Spring Boot 版本为 3.x

Spring Cloud Alibaba 版本

2.2.x

对应的是 Spring Cloud Hoxton 与 Spring Boot 2.2.x,最低反对 JDK 1.8

2020.0

对应的是 Spring Cloud 2020 与 Spring Boot 2.4.x,最低反对 JDK 1.8

2021.x

对应的是 Spring Cloud 2021 与 Spring Boot 2.6.x,最低反对 JDK 1.8

2022.x

对应的是 Spring Cloud 2022 与 Spring Boot 3.0.x,最低反对 JDK 17

小结

Spring Framework 的次要大版本是 6.x,要求 JDK17,以之对应的 Spring Boot 的大版本是 3.x,Spring Cloud 的大版本是 2022.x

doc

  • Spring Framework maintenance roadmap in 2020 (including 4.3 EOL)
  • Spring Framework 6.0 goes GA
  • Spring-Boot-Config-Data-Migration-Guide
  • Spring Boot 2.7.0 available now
  • Preparing for Spring Boot 3.0
  • Spring Tips: the road to Spring Boot 3: Spring Framework 6
  • Migrate Application From Spring Boot 2 to Spring Boot 3
  • Spring Boot 2.7 Release Notes
  • Spring Boot 3.0 Release Notes
  • Upgrading to Spring Framework 6.x
  • Spring Cloud 2020.0 Release Notes
  • Spring Cloud 2021.0 Release Notes
  • Spring Cloud 2022.0 Release Notes
  • Spring Cloud 2021.0.3 is available. Compatible with Spring Boot 2.7.0
  • spring-cloud-alibaba
正文完
 0