前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot 3 升级 踩坑笔记

Spring Boot 3 升级 踩坑笔记

原创
作者头像
MaxKey单点登录开源官方
修改2023-03-16 22:05:39
1.7K0
修改2023-03-16 22:05:39
举报

Spring Boot常用于Java后端开发,于2022年11月24日正式发布了3.0.0版本,带来了全新的特性、升级了依赖版本乃至Java版本,基于Java 17的Spring Boot版本,以Jakarta EE 9为基准并支持Jakarta EE 10;与此同时也弃用或更改了一些旧版本中的写法,导致了需要修改代码或配置文件。

笔者尝鲜去升级了一下Spring Boot 3.0,本篇文章将会简要归纳总结一下笔者在升级的时候需要进行的操作、遇到的问题和解决方案,希望能对各位读者有所帮助。

升级后版本信息

代码语言:javascript
复制
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

代码语言:javascript
复制
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip

迁移到Jakarta EE

从Spring Boot 3.0开始,原有的Java EE被彻底弃用,换用Jakarta EE,也就是说,所有包名为javax.*的引用都需要更换为jakarta.*。如果使用的是IntelliJ IDEA,可以点击重构-迁移软件包和类-Java EE to Jakarta EE来自动完成扫描和迁移。

此时可以尝试构建并启动服务端,如果能成功启动,恭喜Spring Boot 3升级成功。如果无法正常构建或启动,还需要继续阅读问题排查。

自动配置文件变更

Spring Boot 2.7引入了一个新的文件:

代码语言:javascript
复制
META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

用于注册自动配置,同时保持与 spring.factories 中注册的向后兼容。Spring Boot 3.0发布后,spring.factories已经被移除,只能通过imports文件来注册自动配置。

XML引用变更

由于JDK中已经包含了XML包,删除以下依赖

代码语言:javascript
复制
implementation group: 'org.ogce', name: 'xpp3', version: "${xpp3Version}"
implementation group: 'xml-apis', name: 'xml-apis', version: "${xmlapisVersion}"

否则会报以下错误

代码语言:javascript
复制
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

代码语言:javascript
复制
mysqlconnectorj 8.0.32
mybatis 3.5.12
mybatisspring 3.0.1
MyBatis Spring Boot Starter 3.0.1

Micrometer和prometheus 的支持

代码语言:javascript
复制
micrometercore 1.10.4
prometheus 0.16.0

特殊问题处理

其他特殊的问题需要根据具体情况进行处理

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 升级后版本信息
  • 迁移到Jakarta EE
  • 自动配置文件变更
  • XML引用变更
  • 数据访问相关的变更
  • 数据库访问升级
  • Micrometer和prometheus 的支持
  • 特殊问题处理
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档