当前位置:网站首页 > 技术博客 > 正文

springboot版本升级



评价项/项目名 yudao-cloud Ruoyi-Cloud RuoYi-Cloud-Plus Dante Cloud pig bladex JeecgBoot 官网 芋道yudao-cloud 开发指南 若依 plus-doc.dromara.org Dante Cloud pig4cloud bladex.cn、看云-SpringBlade开发手册 JeecgBoot 源码收费 免费 免费 免费 免费 免费 + 收费(3999) 免费 + 收费(5000) 免费 + 收费() 文档收费 文档收费 免费、视频收费 文档免费、视频收费 免费 免费、授权收费 文档收费 文档免费、授权收费 github yudao-cloud RuoYi RuoYi-Vue-Plus Dante Cloud pig SpringBlade jeecg-boot gitee yudao-cloud RuoYi RuoYi-Vue-Plus Dante Cloud 暂无 SpringBlade jeecg-boot jdk17分支 master-jdk21 RuoYi-Cloud-Plus 2.X dante-cloud 3.1.X pig jdk17 jeecg-boot/springboot3
  • 参考1-微信公众号-这可能是最全的SpringBoot3新版本变化了!、
  • 参考2-SpringBoot官网-Spring Boot 3.0 Release Notes、
  • 参考3-微信公众号-Swagger升级指南:Swagger2与Swagger3注解差异揭秘、
  • 参考4-微信公众号-Dante Cloud 3.2.0.0 发布,首个适配 Spring Boot 3.2版本及经验分享
  • 参考5-JeecgBoot 文档中心-升级SpringBoot3

前提说明,建议先完成springboot2.x—>springBoot2.7.x+jdk17的适配,这里升级难度会小很多。参考:文章最前面的文章。

1、jdk17变动(如javax)

详见: jdk8升级JDK17避坑指南(适用于SpringBoot2.3—SpringBoot2.7升级)

  • 模块化对反射的影响==>对系统类的反射增加了限制,需要打开限制增加jvm启动参数,自己写的类,可以正常使用反射。
  • 删除sun.misc 下的包,如sun.misc.BASE64Encoder==>替换
  • 删除JAXB、soup相关==>maven仓库上面有新的maven坐标,
  • 删除javax.annotation==>maven仓库上面有新的maven坐标,

2、redis修改spring.redis.host ===> spring.data.redis.host

 
  

3、SpringCloudApplication注解被删除

使用@SpringBootApplication替换

4、不兼容升级import java.servlet====>import jakarta.servlet

servlet捐献给社区,为了避免版权问题,修改了包名,导致不兼容.

  • javax.servlet===> jakarta.servlet
  • javax.validation ===> jakarta.validation
  • javax.annotation ===> jakarta.annotation
  • javax.mail ===> jakarta.mail
  • javax.websocket ==> jakarta.websocket
 
  

5、swagger集成 弃用springfox—>springdoc不兼容升级

springfox不维护了,springboot3使用springdoc,并启用openapi3.0,相关注解进行了变化。

参考:spring boot 3 整合 swagger3、
参考:Swagger升级指南:Swagger2与Swagger3注解差异揭秘、
参考:OpenApi3.0注解说明

注解作用 swagger2 swagger2示例 swagger3-openApi3.0 swagger示例 替换 用于Controller @Api @Tag —>、—> 用于Controller接口 @ApiOperation @Operation –> 用于Controller接口参数注解 @ApiParam或@ApiImplicitParam @Parameter —> 参数隐藏 @ApiIgnore / / / 实体字段 @ApiModelProperty 、 @Schema —>、–>、—> 实体类 @ApiModel 、 @Schema —>、—>
 
  

swaggr2实例

 
  

swagger3示例

 
  

6、动态数据源baomidou的dynamic-datasource依赖变动

经过测试,该条也可以不升级
参考1:baomidou dynamic-datasource、
参考2:kancloud tracy5546 dynamic-datasource

 
  

7、Spring Framework 6.0 中删除了对 Apache HttpClient 支持(RestTemplate受影响)

升级到SpringBoot3发现依赖提示缺少:rg.apache.httpcomponents:httpclient,一些三方库可能依赖httpclient,就需要自己手工引入依赖。三方包如:spring-data-elasticsearch5、nacos-client 1.4.6、weixin-java-pay 4.0.0、htmlunit 3.6

参考: Spring-Boot-3.0-Migration-Guide#apache-httpclient-in-resttemplate、

 
  

8、SpringBoot3.0整合RocketMQ时出现未能加载bean文件

springboot2.x使用rocketmq没有问题,springboot3出现,required a bean of type ‘org.apache.rocketmq.spring.core.RocketMQTemplate’ that could not be found.

 
  
 
  

9、springboot3默认依赖 elasticsearch从7.x升级到8.x

  • 配置文件地址修改:==>
  • springboot3要求elasticsearch必须升级到8.x,不能使用7.x,否则报错:
  • 废弃:high client客户端
  • 要求ElasticSearch必须8.x

10、springboot 3.2 openFeign加载失败暂未解决 (3.1没问题)

启动失败 feign导致 not annotated with HTTP method type (ex. GET, POST)

  • https://blog.csdn.net/nailsoul/article/details/
  • https://www.jianshu.com/p/11b4cbc8951a
  • https://juejin.cn/post/

11、hutool5.8–>hutool6.0升级要要点

说明常见类,如果找不到,请看源码注释,注释上面写的有,或者全局搜索即可,无需多说。

  • –>
  • hutool类变化说明: 【6.0.0】升级到6.0不兼容情况汇总,大家一起来统计维护呀、
  • 国密相关SmUtil,使用6.0x问题,参加:hutool 5.x 和 hutool 6.x crypto 国密SMUtil 模块放在一个工程中会产生冲突

12、Centos7使用jdk21报错

java: /lib64/libc.so.6: version `GLIBC_2.14’ not found (required by /usr/local/java/jdk-21.0.2+13/bin/…/lib/libjli.so)

参考1:version `GLIBC_2.14’ not found 问题解决

参考2:解决 /lib64/libc.so.6: version `GLIBC_2.15’ not found 问题

最新已经是了,可以直接安装:,安装前确保安装的有。

  • Centos6 推荐2.17

13、@Async注解报错Invalid return type for async method (only Future and void

分析原因,springboot2.7一切正常,升级到springboot3.x@Async标记的方法,只能返还void或者Future(@Async+Future+AsyncResult返回值)

版权声明


相关文章:

  • dds协议编程2025-09-21 13:01:03
  • 正品蓝导航—最全收入2025-09-21 13:01:03
  • 内存trfc根据什么调整2025-09-21 13:01:03
  • python 有趣的项目2025-09-21 13:01:03
  • c语言if(!f)函数的使用方法?2025-09-21 13:01:03
  • c语言中结构体数组的使用2025-09-21 13:01:03
  • js页面弹窗2025-09-21 13:01:03
  • 线程同步有什么用2025-09-21 13:01:03
  • 单片机c语言轻松入门2025-09-21 13:01:03
  • 01背包问题动态规划算法代码2025-09-21 13:01:03