Web开发

首页 » 常识 » 问答 » 我服了SpringBoot升级后这服务
TUhjnbcbe - 2023/8/8 22:03:00

最近由于各方面的原因在准备升级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

1
查看完整版本: 我服了SpringBoot升级后这服务