springboot 1.4.0升级2.2.6版本后遇到的问题总结

SpringBoot版本从1.4.0升级为版本2.2.6

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <!--<version>1.4.0.RELEASE</version>-->
        <version>2.2.6.RELEASE</version>
    </parent>

SpringCloud版本升级为对应匹配Hoxton.SR4

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <!--<version>Brixton.SR3</version>-->
                <version>Hoxton.SR4</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

1、Sort排序时遇到的问题 has private access in 'org.springframework.data.domain.Sort'

     原因:springboot2.2.1(含)以上的版本Sort已经不能再实例化了,构造方法已经是私有的了!  

     解决方法:改用Sort.by获得Sort对象

//旧版本
query.with(new Sort(Direction.DESC, "createTime"));       

//新版本
query.with(Sort.by(Direction.ASC, "createTime"));

2、不兼容的类型: com.mongodb.client.result.UpdateResult无法转换为com.mongodb.WriteResult

     解决方法:WriteResult 替换 UpdateResult

3、对于BasicQuery(com.mongodb.BasicDBObject,com.mongodb.BasicDBObject), 找不到合适的构造器

     原因: mongodb中QueryBuilder中DBObject被弃用,改为Document构造的解决方式

     解决方法:Document 替换 BasicDBObject

//旧版本
Query query = new BasicQuery(new BasicDBObject(),new BasicDBObject());

//新版本
Query query = new BasicQuery(new Document(),new Document());

4、Caused by: java.lang.ClassNotFoundException: org.apache.commons.pool2.impl.GenericObjectPoolConfig

     原因:缺少因commons-pool2的依赖包

     解决方法:添加下面依赖

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
    <version>2.0</version>
</dependency>

5、启动报错提示  nested exception is java.lang.NoClassDefFoundError: redis/clients/jedis/JedisPoolConfig

原因:缺少Jedis的依赖

解决方法:添加下面依赖

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
</dependency>

 6、org.springframework.cloud.config.client.DiscoveryClientConfigServiceBootstrapConfiguration required a bean of type 'org.springframework.cloud.client.discovery.DiscoveryClient' that could not be found.

原因:缺少注解@EnableDiscoveryClient

@SpringBootApplication
//版本升级后添加
@EnableDiscoveryClient
@EnableEurekaClient
@EnableCircuitBreaker
@ComponentScan(basePackages =
{ "com.Demo.test" })
public class Application{}

 7、springboot从1.3.5升级为2.2.6后@SpringApplicationConfiguration注解报错

原因:这个注解在1.4就被替换了,较新版的Spring Boot取消了@SpringApplicationConfiguration这个注解

解决方法:springboot1.4版本以及以后的版本,使用@SpringBootTest

 8、Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

原因:提示信息表明数据库驱动com.mysql.jdbc.Driver'已经被弃用了、应当使用新的驱动com.mysql.cj.jdbc.Driver'

解決方法:

#修改前
#driverClassName: com.mysql.jdbc.Driver
#修改后
 driverClassName: com.mysql.cj.jdbc.Driver

 9、Parameter 0 of method linkDiscoverers in org.springframework.hateoas.config.HateoasConfiguration required a single bean, but 15 were found:

原因:swagger版本不匹配

解決方式:

<!-- swagger依赖 -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <!--<version>2.2.2</version>-->     <!--修改前版本-->
        <version>2.6.1</version>            <!--修改后版本-->
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <!--<version>2.2.2</version>-->    <!--修改前版本-->
        <version>2.6.1</version>           <!--修改后版本-->
    </dependency>

 10、部分依赖artifactid发生变化的。例如用到eurekaribbon等依赖的需要将依赖artifactid改成新版本对应的名称。

例如

ribbon依赖修改

#修改前
<artifactId>spring-cloud-starter-ribbon</artifactId>
#修改后
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>

eureka依赖修改

#修改前
<artifactId>spring-cloud-starter-eureka</artifactId>
#修改后
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>

hystrix依赖修改

<!-- hystrix依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
#修改前 <!--<artifactId>spring-cloud-starter-hystrix</artifactId>-->
#修改后 <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency>
原文地址:https://www.cnblogs.com/wueryuan/p/12836156.html