当前位置: 首页 > 后端技术 > Java

是时候为SpringBoot3.0做准备了

时间:2023-04-02 00:17:16 Java

2018年2月28日,SpringBoot进入2.0时代,距今已有4年多了。2022年11月,SpringBoot3.0正式发布。它将基于SpringFramework6.0并需要Java17或更高版本。这也将是JakartaEE9的第一个SpringBoot版本。开发人员还有六个月的时间过渡到SpringBoot3.0。今天胖哥就给大家说说一些以后快速迁移到3.0的方法。Java17Java17将是自Java8以来最重要的LTS版本,是Java社区八年努力的成果。Java17包含许多重要的改进,是目前最强大的LTS版本。目前所有的SpringBoot2.x版本都可以很好的适配Java17,大家可以先开始升级调试JDK,无需等待就可以尝试一些新的特性和API。尽快升级到SpringBoot2.7前几天胖哥说SpringBoot2.7基本就是SpringBoot2.x的最后一个大版本了。SpringBoot2.5已经停止OSS支持,不再维护。SpringBoot2.6也将在SpringBoot3.0发布后停止维护,迭代速度越来越快。尽快升级到2.7,更好的迁移到3.0。这里胖哥建议不要跳过版本升级。比如不要直接从2.4跳到2.7。尝试按照2.4、2.5、2.6、2.7的步骤升级。如果跨度太大,不利于平滑升级。去除过时代码每个SpringBoot版本都会或多或少的有@Deprecated标记的代码,SpringBoot3.0会彻底去除2.x中的过时代码,当然2.x早期的过时代码也可能在最新的2.x中。x被删除。尽量不要使用过时的代码。通常,过时的代码会注解过时的原因或替代的API。配置文件机制的改变在SpringBoot2.4中,改变了配置文件application.properties和application.yaml的加载机制,目的是简化外部配置的加载方式,使其更加合理,带来不兼容。为了顺利升级,Spring提供了一个配置项来兼容旧机制:spring:config:use-legacy-processing:true,这个机制在3.0会被移除,我们必须使用符合新机制的配置方式机制,如果你有这个有几个方法要注意。多文档Yaml如果在yaml配置文件中使用spacer---声明多个文档,需要知道现在声明的配置属性是按照文档声明的顺序注册的;在SpringBoot2.3及更早版本中,激活顺序基于配置文件。例如:---spring:profiles:active:devapplication:name:dev-appserver:port:8081---spring:profiles:active:prodapplication:name:prod-appserver:port:8080这个配置文件在在SpringBoot2.3及更早版本中,会根据spring.profiles.active来确定加载环境。但是从2.4开始,后面的属性会覆盖前面的属性。如果你的配置文件在jar外,外部配置总是覆盖jar内的配置,并且配置文件适合特定的环境,比如application-dev.yaml。2.4以下版本,jar外的application.yaml不会覆盖jar内的application-.yaml文件。从2.4开始,外部文件会一直覆盖jar中的配置文件。您需要检查您是否属于这种情况。激活配置文件如果您使用spring.profiles属性来激活环境配置,您现在应该迁移到spring.config.activate.on-profile。老方法:spring:profiles:"prod"secret:"production-password"新方法:spring:config:activate:on-profile:"prod"secret:"production-password"这真是折腾人啊。spring.profiles.active仍然可以用于激活特定的环境,例如命令行$java-jarmyapp.jar--spring.profiles.active=prod也可以在application.properties或application.prod中使用spring.profiles。yaml。active,从2.4开始,spring.profiles.active不能在特定的环境下使用,也就是说不能在application-.yaml中使用,也不能在有间隔的多文档中使用。总之,你不能再使用spring.profiles.active合并包含spring.config.activate.on-profile属性的配置文件。另外,spring.profiles.include属性只能在非特定的配置文件中使用。以下配置无效:#Invalidconfigurationspring:config:activate:on-profile:"prod"profiles:include:"metrics"更多要点请参考官方配置文件Springboot配置迁移指南。性能更高的路径解析方式从SpringBoot2.6开始。默认使用PathPatternParser进行路径解析,替代了之前的Ant风格匹配AntPathMatcher。升级的时候,很多人遇到Swagger的问题,通过spring.mvc.pathmatch.matching-strategy解决了这个问题。虽然AntPathMatcher会在SpringBoot3.0中继续生效,但PathPatternParser因为性能更高已经成为官方推荐。后面我也会出一个专题来分析PathPatternParser。兼容性问题首先是JakartaEE9的兼容性问题,确保你的第三方依赖库和你的代码是兼容JakartaEE9的。另外检查SpringFramework使用的第三方依赖jar是否是计划兼容Spring6尝试学习Spring6Spring6和SpringBoot3发布了多个里程碑。闲暇之余,您可以抽出一些时间试用一下,体验新的功能和变化,评估您的应用升级的难易程度。关注公众号:Felordcn获取更多资讯个人博客:https://felord.cn