SpringBoot(2.3.4.RELEASE) + Spring Cloud(Hoxton.SR8版本)+Zull作为网关路由, 升级到SpringBoot3.3.1

SpringBoot(2.3.4.RELEASE) + Spring Cloud(Hoxton.SR8版本)+Zull作为网关路由, 升级到SpringBoot3.3.1。跨度还比较大,需要改动的地方还是比较多。各个组件需要进行版本适配,SpringCloud需要进行版本适配升级、spring-cloud-starter-netflix-zuul要替换为 spring-cloud-starter-gateway。
Spring Cloud Dependencies从2020.0.x版本开始,不包含spring-cloud-starter-netflix-zuul。


遇到的问题:

1.需要使用jdk17版本

2. javax.servlet.http.HttpServletRequest 替换为 jakarta.servlet.http.HttpServletRequest 
javax.servlet.http. 替换为 jakarta.servlet.http.
Spring升级之后:
((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();变为jakarta.servlet.http.HttpServletRequest 

cn.dataenergy.insight.audit.InnerAuditRealm.getHttpServletRequest()
@Override
public HttpServletRequest getHttpServletRequest() {
    return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
}


3.javax.validation.constraints 替换为 jakarta.validation.constraints


4.Spring Boot 3.3.1 推荐使用的 MyBatis 版本是 MyBatis 3.5.x。
Spring Boot 3.x 系列建议使用 MyBatis 3.5.x 系列,因为 MyBatis 3.5.x 支持最新的 Java 17 特性以及 Spring Boot 3.x API。

5.Spring Boot 3.3.1版本推荐使用的Dubbo版本为3.2.10。


6. Spring Boot 3.3.1,Service不能相互依赖。
SpringBoot2.6.0起及新版本中解决循环依赖问题。
https://blog.csdn.net/yuanjinshenglife/article/details/135901400
最简单的方法在yaml或properties中配置spring.main.allow-circular-references=true
#允许bean Service循环依赖
spring.main.allow-circular-references=true


7.Spring MVC found on classpath, which is incompatible with Spring Cloud Gateway.
同时包含了Spring MVC和Spring Cloud Gateway,而这两者是相互排斥的。Spring Cloud Gateway是基于Spring WebFlux的,因此需要使用反应式编程模型。
不能同时使用Spring MVC和Spring Cloud Gateway。(spring-boot-starter-web、spring-cloud-starter-gateway不能同时存在)

解决这个问题,有两个办法:
解决办法一:
Spring Cloud Gateway 是使用 netty+webflux 实现因此不需要再引入 web 模块。如果需要同时引入则需要增加配置项。
#Spring MVC found on classpath, which is incompatible with Spring Cloud Gateway.
#同时使用Spring MVC和Spring Cloud Gateway
spring.main.web-application-type=reactive

解决办法二:
你不需要Spring MVC的功能,可以移除spring-boot-starter-web依赖。

8.Spring Boot 3.3集成swagger
https://springdoc.org/
https://springdoc.org/#migrating-from-springfox
Spring Boot 3.x与Swagger的集成主要使用springdoc-openapi-ui,这是因为springfox已经停止更新,不再支持新的Spring Boot版本。对于Spring Boot 3.3来说,推荐使用springdoc-openapi-starter-webmvc-ui,它支持OpenAPI 3规范,并且兼容最新的Spring Boot和Java版本。

<!-- openAPI包,替换 Swagger 的 SpringFox -->
<!-- https://blog.csdn.net/m0_74825093/article/details/144965950 -->
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.2.0</version>
</dependency>


swagger访问地址:http://127.0.0.1:8080/swagger-ui/index.html#/

https://blog.csdn.net/m0_74825093/article/details/144965950
https://blog.csdn.net/qq_55269149/article/details/137285469
https://www.showapi.com/news/article/67367f714ddd79f11a149aa8

9.查找spring-boot与spring-cloud适配版本的几种方式:
1)、https://github.com/spring-cloud/spring-cloud-release/wiki/Supported-Versions#supported-releases
2)、spring-boot 与 spring-cloud的对应关系:
https://www.cnblogs.com/MuXinu/p/17219436.html
浏览器直接访问: https://start.spring.io/actuator/info  返回报文当中包含的匹配的版本。
3)、https://start.spring.io/ 可以生成SpringBoot demo项目,自动生成Springboot和SpringCloud适配的版本。


spring-boot-starter-parent、spring-cloud-dependencies、spring-cloud-starter-alibaba-nacos-discovery 适配版本:
spring-boot-starter-parent 2.5.4、spring-cloud-dependencies  2020.0.3、spring-cloud-starter-alibaba-nacos-discovery 2021.1(nacos-client 1.4.1,发布的nacos服务版本为1.3.0)。

spring-boot-starter-parent 3.3.7、spring-cloud-dependencies  2023.0.5、spring-cloud-starter-alibaba-nacos-discovery 2023.0.1.0(nacos-client 2.3.2,发布的nacos服务版本为2.3.2)。

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.7</version>
        <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2023.0.5</version>
                <type>pom</type>
                <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

10.https://start.spring.io/ 可以生成SpringBoot demo项目,进行验证Springboot 和 SpringCloud的对应版本。

参考:
https://blog.csdn.net/pumpkin84514/article/details/142371957
Spring Boot 从 2.7.x 升级到 3.3注意事项,有很多限制。
要求:Spring Boot 3.x 最低要求 JDK 17。如果你当前项目还在使用 JDK 8 或 JDK 11,首先需要升级到 JDK 17 或更高版本。


https://www.cnblogs.com/didispace/p/17934021.html
Spring Boot 2.x 到 3.2 的全面升级指南

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值