SpringBoot版本升級(jí)容易遇到的一些問(wèn)題
背景:由于項(xiàng)目需求,需要將nacos 1.4.6版本升級(jí)到2.x版本,由此引發(fā)的springboot、springcloud、springcloud Alibaba一系列版本變更。
舊版本分別為:
Spring Boot 2.3.5.RELEASE
Spring Cloud Hoxton.SR9
Spring Cloud Alibaba 2.2.6.RELEASE
一、版本選擇
1、springboot2.x.x及以下使用jdk11、jdk8都可以,springboot3.x.x最低要求jdk17。首先確定springboot版本需要支持jdk8,即需要springboot2.x.x。
2、根據(jù)項(xiàng)目需求,選擇合適的版本。
參考:Git版本說(shuō)明網(wǎng)址:(組件版本以及依賴關(guān)系)
例:要考慮支持nacos2.x,所以紅框內(nèi)是可選。

Spring Cloud Alibaba 需要在2.2.8.RELEASE及以上,紅框內(nèi)是可選。

最終確定選擇用*標(biāo)記的最新版本。
Spring Boot 2.6.13
Spring Cloud 2021.0.5
Spring Cloud Alibaba 2021.0.5.0
nacos 2.2.0
二、奇奇怪怪的坑
1、循環(huán)依賴
springboot升級(jí)為2.6.13后項(xiàng)目啟動(dòng)報(bào)錯(cuò):

Action:
Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true.
出現(xiàn)的bug大概意思是:不鼓勵(lì)依賴循環(huán)引用,默認(rèn)情況下是禁止的。更新您的應(yīng)用程序以刪除 bean 之間的依賴循環(huán)。作為最后的手段,可以通過(guò)將 spring.main.allow-circular-references 設(shè)置為 true 來(lái)自動(dòng)中斷循環(huán)。
沒(méi)有特殊處理代碼,最后選擇了修改yml配置文件,按照提示添加如下配置
spring:
main:
allow-circular-references:true
2、quartz數(shù)據(jù)源配置
springboot升級(jí)為2.6.13后項(xiàng)目啟動(dòng)報(bào)錯(cuò):
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘quartzScheduler’ defined in class path resource [org/springframework/boot/autoconfigure/quartz/QuartzAutoConfiguration.class]: Invocation of init method failed; nested exception is org.quartz.SchedulerConfigException: DataSource name not set.
報(bào)錯(cuò)原因:
spring-boot-starter-quartz 2.5.6 之前使用org.quartz.impl.jdbcjobstore.JobStoreTX定義quartz的默認(rèn)數(shù)據(jù)源支持,quartz.properties如下
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
2.5.6的版本后將不再支持以上方式進(jìn)行配置默認(rèn)數(shù)據(jù)源,需改為如下配置
org.quartz.jobStore.class=org.springframework.scheduling.quartz.LocalDataSourceJobStore
3、跨域問(wèn)題
項(xiàng)目啟動(dòng)成功,前端訪問(wèn)報(bào)錯(cuò):

去網(wǎng)上查了原因后,是升級(jí)后spring的CorsFilter類針對(duì)CorsConfiguration新增了校驗(yàn),最后修改方案是繼續(xù)使用CorsFilter,使用官方推薦的allowedOriginPatterns即可,如下
// corsConfiguration.addAllowedOrigin("*");
corsConfiguration.addAllowedOriginPattern("*");

4、版本依賴排除
升級(jí)后sentinel相關(guān)提示找不到依賴錯(cuò)誤,cant reslove fastjson:1.2.83_noneautotype
排除當(dāng)前使用的版本,引用maven倉(cāng)庫(kù)中有的版本

5、Druid的一個(gè)bug
拋出異常:maxEvictableIdleTimeMillis must be grater than minEvictableIdleTimeMillis。
Druid-1.1.10 升級(jí)為 Druid-1.1.22

具體詳細(xì)可參考這篇文章:Druid的一個(gè)Bug
以上就是SpringBoot版本升級(jí)容易遇到的一些問(wèn)題的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot版本升級(jí)問(wèn)題的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- SpringBoot實(shí)現(xiàn)版本升級(jí)到2.7.18
- SpringBoot Admin升級(jí)boot等組件版本后無(wú)法監(jiān)控微服務(wù)問(wèn)題
- springboot版本升級(jí)以及解決springsecurity漏洞的問(wèn)題
- springboot升級(jí)Tomcat版本的方法示例
- 升級(jí)springboot中spring框架的版本的實(shí)現(xiàn)方法
- SpringBoot Maven升級(jí)自帶的jar包版本問(wèn)題
- SpringBoot升級(jí)指定jackson版本的問(wèn)題
- 淺談springboot升級(jí)版本引發(fā)的災(zāi)難
相關(guān)文章
Java中常見(jiàn)的編碼集問(wèn)題總結(jié)
這篇文章主要為大家整理了一些Java中常見(jiàn)的編碼集問(wèn)題,文中的示例代碼講解詳細(xì),對(duì)我們深入理解Java有一定的幫助,感興趣的小伙伴可以了解一下2023-02-02
SpringCloud Stream消息驅(qū)動(dòng)實(shí)例詳解
這篇文章主要介紹了SpringCloud Stream消息驅(qū)動(dòng)的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
Java Comparator.comparing比較導(dǎo)致空指針異常的解決
這篇文章主要介紹了Java Comparator.comparing比較導(dǎo)致空指針異常的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
Spring Boot實(shí)現(xiàn)郵件服務(wù)(附:常見(jiàn)郵箱的配置)
這篇文章主要給大家介紹了關(guān)于Spring Boot實(shí)現(xiàn)郵件服務(wù)的相關(guān)資料,文中還附上了常見(jiàn)郵箱的配置,通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
Mybatis實(shí)現(xiàn)一對(duì)一查詢映射處理
MyBatis是一種流行的Java持久化框架,它提供了靈活而強(qiáng)大的查詢映射功能,本文主要介紹了Mybatis實(shí)現(xiàn)一對(duì)一查詢映射處理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08
Java基礎(chǔ)學(xué)習(xí)筆記之?dāng)?shù)組詳解
這篇文章主要介紹了Java基礎(chǔ)學(xué)習(xí)筆記之?dāng)?shù)組,結(jié)合實(shí)例形式詳細(xì)分析了java的基本概念、定義、迭代、輸出、反轉(zhuǎn)、排序等常用操作技巧,需要的朋友可以參考下2019-08-08

