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

本文次要钻研一下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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理