【上 我服了!SpringBoot升級后這服務(wù)我一個星期都沒跑起來!】最近由于各方面的原因在準備升級 Spring Cloud 和 Spring Boot,經(jīng)過一系列前置的調(diào)研和分析,決定把Spring Boot 相關(guān)版本從 2.1.6 升級到 2.7.5,Spring Cloud 相關(guān)版本從 Greenwich.SR1 升級為 2021.0.4 。
升級包含基礎(chǔ)的業(yè)務(wù)服務(wù)代碼的升級改造適配,還有就是中間件一堆代碼的改造,上周經(jīng)歷了一周的修改,用來測試的服務(wù)仍然還沒有跑起來,所以這篇文章我會記錄下來這升級過程中的一些問題,由于革命仍未成功,所以這是上篇 。
1. hibernate-validator包下的類報錯在 Spring Boot 2.3版本之后,spring-boot-starter-web 中沒有依賴 hibernate-validator 。
解決方案:使用新的依賴 。
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>2. ApplicationEnvironmentPreparedEvent類改變Spring Boot 2.4版本之后,ApplicationEnvironmentPreparedEvent 構(gòu)造函數(shù)新增了ConfigurableBootstrapContext,業(yè)務(wù)代碼還好,應(yīng)該都用不上這個類,中間件代碼使用到的地方都需要修改 。
解決方案:修改代碼 。
public ApplicationEnvironmentPreparedEvent(ConfigurableBootstrapContext bootstrapContext,SpringApplication application, String[] args, ConfigurableEnvironment environment) {super(application, args);this.bootstrapContext = bootstrapContext;this.environment = environment; }

文章插圖
3. junit依賴升級升級后的junit版本默認是
junit5(我沒有去確認是哪個版本發(fā)生了變化),升級之后包名發(fā)生了改變,所有的測試用例都需要修改 。import org.junit.jupiter.api.Assertions;import org.junit.jupiter.api.Test;另外發(fā)現(xiàn)Assert類不存在了,可以改用Assertions 。Assertions.assertNotNull(result);解決方案:修改代碼!4. Spring Cloud兼容問題由于測試過程中先升級的 Spring Boot,發(fā)現(xiàn) Spring Cloud 使用到的低版本代碼不兼容,升級到文章開頭說的版本之后問題解決 。
比如下面的
spring-cloud-context 啟動時候報錯 。
文章插圖
5. SpringApplicationRunListener類改變和第二個問題比較類似,
SpringApplicationRunListener 中這兩個方法新增了 ConfigurableBootstrapContext,對應(yīng)實現(xiàn)類都需要修改,這個應(yīng)該無論在業(yè)務(wù)還是中間件代碼中都應(yīng)該有大量的使用 。解決方案:修改代碼!
default void starting(ConfigurableBootstrapContext bootstrapContext) {}default void environmentPrepared(ConfigurableBootstrapContext bootstrapContext,ConfigurableEnvironment environment) {}6. ServerProperties變更spring-boot-autoconfigure 包下 ServerProperties 中的內(nèi)部類 Tomcat 屬性變更,獲取最大線程數(shù)方法發(fā)生改變 。原寫法:
serverProperties.getTomcat().getMaxThreads()解決方案:
serverProperties.getTomcat().getThreads().getMax()7. spring-cloud-openfeign中移除ribbon和hystrix依賴Commit地址:https://github.com/spring-cloud/spring-cloud-openfeign/commit/8a08e1ec4b4f0d40193a4ea9c03afdeffe3110a6
這個提交把 spring-cloud-openfeign 里面關(guān)于 ribbon 和 hystrix 的依賴相關(guān)代碼全部刪除了,這個 commit 我找了一遍 issue 和 PR,都沒有發(fā)現(xiàn)相關(guān)說明,大佬直接刪的,具體原因不清楚為什么直接全刪干凈了 。
比如我的啟動報錯:
Caused by: java.lang.ClassNotFoundException: org.springframework.cloud.openfeign.ribbon.LoadBalancerFeignClient
經(jīng)驗總結(jié)擴展閱讀
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 未來1月3星座財運蒸蒸日上 生意興隆能夠收獲不少財富
- 如何把考駕照說的高大上 吸引人的考駕照文案
- 月老牽線喜結(jié)良緣上上簽 破鏡重圓的3大星座
- 未來兩年人生上上簽 添財添子添富貴有福氣的星座
- 下個月財運旺事業(yè)上升 瘋狂斂財前途無量4大星座
- 接下來桃花蕩漾撞上真情姻緣到手 收獲意外幸福的4大星座
- 愿我們越來越好的文案 象征無限美好前景的詩句
- 對未來寄予美好希望的詩句 愿我們越來越好的文案
- 電力公司名字冷門 電力公司起名字大全免費
- 2023年4月哪天是開市吉日
