一、引言
springCloud和springBoot较低版本有时候会有网络漏洞,所以随着springCloud和springBoot的升级会修复这些漏洞。那么有时候就遇到在升级过程中,遇到不兼容的问题。需要总结下来记录一下。
二、springBoot和springCloud的使用
1、springBoot的引用
我们可以在springboot父工程的pom中引入springboot,这里表示使用springboot的2.6.2版本。博主之前使用的是2.5.2的版本。2.6.2为已经升级后的版本。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.2</version>
</parent>
2、引入了父依赖,我们就可以在任意子module中引入springboot
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
3、springCloud的引用,这里使用2021.0.1 也是升级后的版本,之前是使用2020.0.3
<spring-cloud.version>2021.0.1</spring-cloud.version>
常使用到的springCloud依赖
(1)、网关
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
(2)其他程序
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
(3)feign
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
(4)eureka
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<exclusions>
<exclusion>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
</exclusion>
</exclusions>
</dependency>
对于springboot 2.6.2和springCloud 2021.0.1版本可以兼容其他组件的版本,可参考
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<base.version>1.0-SNAPSHOT</base.version>
<java.version>1.8</java.version>
<spring-cloud.version>2021.0.1</spring-cloud.version>
<spring-boot.version>2.6.2</spring-boot.version>
<mysql.version>8.0.17</mysql.version>
<druid.version>1.1.13</druid.version>
<mybatisplus.version>3.4.3.4</mybatisplus.version>
<mybatis-spring.version>2.2.0</mybatis-spring.version>
<apollo.version>1.8.0</apollo.version>
<dameng.version>7.6.0.142</dameng.version>
<fastjson.version>1.2.83</fastjson.version>
<swagger2.version>2.9.2</swagger2.version>
<hutool.version>5.7.7</hutool.version>
<poi.version>4.1.2</poi.version>
<commons-lang3.version>3.8.1</commons-lang3.version>
<xstream.version>1.4.18</xstream.version>
<log4j-to-slf4j.version>2.15.0</log4j-to-slf4j.version>
<java-jwt.version>3.8.2</java-jwt.version>
<zxing.version>3.3.0</zxing.version>
<barcode4j.version>2.1</barcode4j.version>
<bcprov-jdk15to18.version>1.66</bcprov-jdk15to18.version>
<rocketmq.version>4.7.1</rocketmq.version>
<mq-http-sdk.version>1.0.3.2</mq-http-sdk.version>
<aliyun-sdk-oss.version>3.13.2</aliyun-sdk-oss.version>
<cos_api.version>5.6.89</cos_api.version>
<sharding-sphere.version>4.0.0-RC2</sharding-sphere.version>
<shardingsphere.version>5.0.0-beta</shardingsphere.version>
</properties>
三、升级springboot和springCloud注意的问题
如果之前代码存在循环依赖,需要在yml中配置忽略掉依赖,要不然项目启动会报错,还有就是mvn打包无法打包。
报错信息:
Description:
The dependencies of some of the beans in the application context form a cycle:
提示处理方法:
Action:
Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true.
在yml配置上可解决
spring:
#spring boot 升级到2.6.x后需要增加的配置
main:
allow-circular-references: true
mvc:
pathmatch:
matching-strategy: ANT_PATH_MATCHER