Spring Boot常用于Java后端开发,于2022年11月24日正式发布了3.0.0版本,带来了全新的特性、升级了依赖版本乃至Java版本,基于Java 17的Spring Boot版本,以Jakarta EE 9为基准并支持Jakarta EE 10;与此同时也弃用或更改了一些旧版本中的写法,导致了需要修改代码或配置文件。
笔者尝鲜去升级了一下Spring Boot 3.0,本篇文章将会简要归纳总结一下笔者在升级的时候需要进行的操作、遇到的问题和解决方案,希望能对各位读者有所帮助。
Spring Boot 3.0.4
Spring 6.0.6
Spring Security 6.0.2
springData 3.0.3
springkafka 3.0.4
Java 17
gradle 8.0.2
Gradle Wrapper,可以直接修改gradle/wrapper/gradle-wrapper.properties中的distributionUrl
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip
从Spring Boot 3.0开始,原有的Java EE被彻底弃用,换用Jakarta EE,也就是说,所有包名为javax.*的引用都需要更换为jakarta.*。如果使用的是IntelliJ IDEA,可以点击重构-迁移软件包和类-Java EE to Jakarta EE来自动完成扫描和迁移。
此时可以尝试构建并启动服务端,如果能成功启动,恭喜Spring Boot 3升级成功。如果无法正常构建或启动,还需要继续阅读问题排查。
Spring Boot 2.7引入了一个新的文件:
META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
用于注册自动配置,同时保持与 spring.factories 中注册的向后兼容。Spring Boot 3.0发布后,spring.factories已经被移除,只能通过imports文件来注册自动配置。
由于JDK中已经包含了XML包,删除以下依赖
implementation group: 'org.ogce', name: 'xpp3', version: "${xpp3Version}"
implementation group: 'xml-apis', name: 'xml-apis', version: "${xmlapisVersion}"
否则会报以下错误
The package javax.xml.parsers is accessible from more than one module: <unnamed>, java.xml
spring.data前缀已被保留给Spring Data项目,如果你使用了Spring Data项目的子项目,application.yaml中相关的配置属性就需要响应的变更。例如 spring.redis现在需要修改为spring.data.redis。
将mysql:mysql-connector-java
更改为com.mysql:mysql-connector-j
mysqlconnectorj 8.0.32
mybatis 3.5.12
mybatisspring 3.0.1
MyBatis Spring Boot Starter 3.0.1
micrometercore 1.10.4
prometheus 0.16.0
其他特殊的问题需要根据具体情况进行处理
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。