最近由于各方面的原因在准备升级SpringCloud和SpringBoot,经过一系列前置的调研和分析,决定把SpringBoot相关版本从2.1.6升级到2.7.5,SpringCloud相关版本从Genwich.SR1升级为.0.4。
升级包含基础的业务服务代码的升级改造适配,还有就是中间件一堆代码的改造,上周经历了一周的修改,用来测试的服务仍然还没有跑起来,所以这篇文章我会记录下来这升级过程中的一些问题,由于革命仍未成功,所以这是上篇。
1.hibernate-validator包下的类报错
在SpringBoot2.3版本之后,spring-boot-starter-web中没有依赖hibernate-validator。
解决方案:使用新的依赖。
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-validation/artifactId/dependency
2.ApplicationEnvironmentPpadEvent类改变
SpringBoot2.4版本之后,ApplicationEnvironmentPpadEvent构造函数新增了ConfigurableBootstrapContext,业务代码还好,应该都用不上这个类,中间件代码使用到的地方都需要修改。
解决方案:修改代码。
publicApplicationEnvironmentPpadEvent(ConfigurableBootstrapContextbootstrapContext,SpringApplicationapplication,String[]args,ConfigurableEnvironmentenvironment){super(application,args);this.bootstrapContext=bootstrapContext;this.environment=environment;}
3.junit依赖升级
升级后的junit版本默认是junit5(我没有去确认是哪个版本发生了变化),升级之后包名发生了改变,所有的测试用例都需要修改。
importorg.junit.jupiter.api.Assertions;importorg.junit.jupiter.api.Test;
另外发现Assert类不存在了,可以改用Assertions。
Assertions.assertNotNull(sult);
解决方案:修改代码!
4.SpringCloud兼容问题
由于测试过程中先升级的SpringBoot,发现SpringCloud使用到的低版本代码不兼容,升级到文章开头说的版本之后问题解决。
比如下面的spring-cloud-context启动时候报错。
5.SpringApplicationRunListener类改变
和第二个问题比较类似,SpringApplicationRunListener中这两个方法新增了ConfigurableBootstrapContext,对应实现类都需要修改,这个应该无论在业务还是中间件代码中都应该有大量的使用。
解决方案:修改代码!
defaultvoidstarting(ConfigurableBootstrapContextbootstrapContext){}defaultvoidenvironmentPpad(ConfigurableBootstrapContextbootstrapContext,ConfigurableEnvironmentenvironment){}
6.ServerProperties变更
spring-boot-autoconfigu包下ServerProperties中的内部类Tomcat属性变更,获取最大线程数方法发生改变。
原写法:serverProperties.getTomcat().getMaxThads()
解决方案:serverProperties.getTomcat().getThads().getMax()
7.spring-cloud-openfeign中移除ribbon和hystrix依赖
Commit