springboot讀取bootstrap配置及knife4j版本兼容性問題及解決
因某些特殊原因,需要使用springboot項目讀取bootstrap.yml
中配置,然而添加bootstrap依賴包后,又引發(fā)了springboot、springcloud與knife4j版本匹配的問題 這真是一個環(huán)。。。
項目框架說明
項目背景說明:
- SpringBoot 2.2.5.RELEASE
- knife4j 3.0.3
連環(huán)坑
- 引入bootstrap啟動前配置后,啟動失敗
- 按照錯誤升級springboot版本至2.6.6后,啟動失敗
- knife4j與springboot版本不兼容,需降springboot版本
- 嘗試三者的版本匹配
問題一:springboot項目無法讀取bootstrap.yml配置
出現(xiàn)此問題的原因:
SpringBoot項目,只會識別application. *配置文件,并不會自動識別bootstrap.yml
解決方案:
在pom.xml中添加了bootstrap啟動器依賴
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> <version>3.1.1</version> </dependency>
問題二:啟動報錯,springboot與springcloud版本不匹配
錯誤如下:
Spring Boot [2.2.5.RELEASE] is not compatible with this Spring Cloud release train
Action:
Consider applying the following actions:
- Change Spring Boot version to one of the following versions [2.6.x, 2.7.x] .
沒辦法,按照錯誤升級springboot版本吧(初步嘗試2.6.6)
問題三:啟動報錯Failed to start bean‘documentationPluginsBootstrapper’
錯誤如下:
org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'
在網(wǎng)上查找了下相關(guān)問題,參考文獻:org.springframework.context.ApplicationContextException的解決辦法,發(fā)現(xiàn)是knife4j(swagger)與springboot版本不匹配,得降低springboot版本!??!
另一種解決方案:
修改springmvc的路徑匹配策略 - 待驗證
因為Springfox使用的路徑匹配是基于AntPathMatcher的,而Spring Boot 2.6.X使用的是PathPatternMatcher。
#解決:在application.properties里配置 spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER
版本匹配
springboot與bootstrap(springcloud)
bootstrap(springcloud)版本 | springboot版本 |
---|---|
3.0.1及3.0.0 | [2.3.x, 2.4.x] |
3.0.3 | [2.4.x, 2.5.x] |
3.1.1 | [2.6.x, 2.7.x] |
最終版本方案
SpringBoot 2.4.13 + SpringCloud 3.0.1 + knife4j 3.0.3 終于可以了?。。?!
后記:不要輕易升級版本
淚的教訓(xùn)啊,想著knife4j升級一個大版本看下新特性,結(jié)果引發(fā)了一系列問題~
自己對于框架的知識還是不夠清楚啊,得努力學(xué)習(xí)嘍~
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Springboot3集成Knife4j的步驟以及使用(最完整版)
- SpringBoot?Knife4j框架&Knife4j的顯示內(nèi)容的配置方式
- SpringBoot與knife4j的整合使用過程
- springboot3整合knife4j詳細圖文教程(swagger增強)
- springboot整合knife4j全過程
- knife4j?整合?springboot的過程詳解
- SpringBoot中使用Knife4J的解決方案
- springboot集成swagger3與knife4j的詳細代碼
- Springboot中整合knife4j接口文檔的過程詳解
- knife4j+springboot3.4異常無法正確展示文檔
相關(guān)文章
SpringBoot請求處理之常用參數(shù)注解介紹與源碼分析
SpringBoot是一種整合Spring技術(shù)棧的方式(或者說是框架),同時也是簡化Spring的一種快速開發(fā)的腳手架,本篇讓我們一起學(xué)習(xí)請求處理、常用注解和方法參數(shù)的小技巧2022-10-10