最新 springboot2.x 升级到3的实践笔记,引用 spring-boot-properties-migrator 实操指南
最近在 阅读了部分的热门的开源项目,发现很多都开始 升级迁移到springboot 3 上了,随着 springboot 3 最低 支持 jdk 版本是17 ,项目后面升级 也需要升级到17 上来,所以记录一下实操。
前言: 最近在 阅读了部分的热门的开源项目,发现很多都开始 升级迁移到springboot 3 上了,
随着 springboot 3 最低 支持 jdk 版本是17 ,项目后面升级 也需要升级到17 上来,所以记录一下实操。
参考指南
阅读本文前,可以先参考我推荐 几篇升级指南的文章 ,会更加容易知道升级的点在哪里:
https://segmentfault.com/a/1190000044513857
第三方spring中文网
关 spring security 部分的迁移参考,本案例用的是sa-token:
https://blog.csdn.net/arbiterlk/article/details/131983719
具体步骤
- 把 pom 的spring-boot-starter-parent version 统一为 3.3.2 是现在最新的稳定版本(这里以 此版本为例),如果你不是以此作为 父工程的,那么在相应的工程 更改为自己的3.x.x版本:
(小提示: 标识GA的为稳定发行版 )
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.2</version>
<relativePath/>
</parent>
- 通过 ReImport maven 后 javax的包 显示 标红,此时就可以 替换成 Jakarta下的包了,注意jdk17 中任然保留了一些 javax 的包内容 ,如javax.sql ,javax.crypto 这些可以不用更改 。
- 把那些 项目里starter组件为springboot2的依赖更改为 springboot3 版本的依赖 ,比如我这里的 更改了 satoken和 mybatis-flex等,这里大家依据实际项目用了那些组件,去到其相应官网作替换即可。
<!-- 引入mybatis-flex springboot 依赖-->
<dependency>
<groupId>com.mybatis-flex</groupId>
<artifactId>mybatis-flex-spring-boot3-starter</artifactId>
<version>1.9.5</version>
</dependency>
<!-- 原来是 -->
<!-- <dependency>
<groupId>com.mybatis-flex</groupId>
<artifactId>mybatis-flex-spring-boot-starter</artifactId>
<version>1.9.0</version>
</dependency> -->
<!-- Sa-Token 权限认证, 在线文档:http://sa-token.dev33.cn/ -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot3-starter</artifactId>
<version>1.38.0</version>
</dependency>
<!-- 原来是 -->
<!-- <dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.38.0</version>
</dependency> -->
<!-- 升级 到 1.4.3 -->
<dependency>
<groupId>io.github.linpeilie</groupId>
<artifactId>mapstruct-plus-spring-boot-starter</artifactId>
<version>1.4.3</version>
</dependency>
通过 spring-boot-properties-migrator 迁移配置文件
- 使用 spring-boot-properties-migrator 辅助 配置文件的更改,如果配置文件改动很小,也可以不用,直接更改。
建议在 有 spirng-boot-starter-parent 模块 下新建一个子模块,如果没有,请再添加spring-boot-properties-migrator依赖时指定后项目相应的版本号。 iot-yml-migration (自定义命名)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-properties-migrator</artifactId>
<scope>runtime</scope>
</dependency>
- 把想要改的 yml ,建议一整个 resource 包下 全部copy一份到这个模块下
因为有多个环境需要更改 首先在主配置文件里 指定一个环境后缀如: dev - 然后运行application:
- 显示修改结果:
首次执行时打印如下内容 ,说明对 配置做了相应的更改
The use of configuration keys that have been renamed was found in the environment:
Property source 'Config resource 'class path resource [application-devv2.yml]' via location 'optional:classpath:/'':
Key: spring.redis.database
Line: 91
Replacement: spring.data.redis.database
Key: spring.redis.host
Line: 89
Replacement: spring.data.redis.host
Key: spring.redis.password
Line: 92
Replacement: spring.data.redis.password
Key: spring.redis.port
Line: 90
Replacement: spring.data.redis.port
根据日志 修改后无日志输出,说明这是 application-dev.yml 已经迁移成功了
接下来继续更改 application-devv2.yml 指定devv2 的配置文件 ,然后 重复上面的更改步骤:运行application-》修改打印的要更改的地方-》完成
最后: 这里是一个实操记录,大体迁移思路可以看参考指南的文章。

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)