记一次升级Spring Boot 版本遇到的问题.

Spring Boot 版本升级

因Spring Boot 版本太老,升级到较新的版本.

2.0.8.RELEASE->2.4.7

思路:

直接升级spring boot版本号,然后解决依赖报错问题,找不到类,方法等问题.走一步看一步.

slf4j失效,提示找不到log.

可能的原因有三个:

  • 没有引用正确的lombok的jar包.一般来说在使用spring boot的情况下不会发生这种情况.可以查看classspath中是否包含相关的包.

  • 如果ide是idea,那么可能是idea的lombok插件版本过低. 同时这种错误应该是ide提示有问题,但是可以正常编译运行的,属于idea提示的问题,代码本身是没问题的.

  • 项目升级,同时项目层级关系比较复杂,依赖的管理没有做到一致,那么在某些项目中的spring boot版本已经和其他子项目的版本号不同,会导致其他项目找不到正确的lombok jar包.

一些方法及类的改变带来的运行报错

  1. MongoDbFactory -> MongoDatabaseFactory.

  2. Spring data 中的Sort 类方法改变,原来public的构造方法,现在变为private,并提供了其他静态方法来代替.

public Sort(Sort.Direction direction, List<String> properties) {
       ................
}

更改为

private Sort(Sort.Direction direction, List<String> properties) {
           ................
}

并新增了

public static Sort by(Sort.Direction direction, String... properties) {
             .............
}

改为使用静态方法by之后,正常运行.

  1. 包名的改变
import feign.hystrix.FallbackFactory;

改为

import org.springframework.cloud.openfeign.FallbackFactory;

好用的工具

可以在依赖中暂时加入以下依赖,其会在启动时检测新版本与老的配置冲突的问题并在控制台打印出来.优点是可以检测出所有的不适配配置项.

实测,在最新版 idea中IntelliJ IDEA 2021.1.2 (Ultimate Edition)中,pom中更新了spring boot 版本后,会提示application.yml文件中过时的配置.

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-properties-migrator</artifactId>
 <scope>runtime</scope>
</dependency></pre>

[图片上传中...(image-20210624161507481.png-e06d1d-1624605052257-0)]

spring cloud兼容问题

如果项目中使用了spring cloud,还要考虑spring boot和它的兼容性.

spring cloud对spring boot的兼容性查看

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容