(文末有彩蛋,不看白不看)兌現(xiàn)一下之前答應(yīng)讀者的事

大家過年好呀?。ㄎ遥┟魈炀鸵_工上班啦!在假期的最后一天踢了會(huì)球,簡(jiǎn)單吃點(diǎn)東西,晚上來兌現(xiàn)答應(yīng)一位讀者的事情。開整!
前情提要
這篇文章緣起于「開發(fā)者」技術(shù)交流群中一位讀者遇到的問題:

簡(jiǎn)單來說,就是 Spring Boot 3 + Swagger3 的組合用之前的方式配置有問題。趁著假期還在,咱們把問題解決了,也算是兌現(xiàn)之前的承諾。
問題重現(xiàn)
我們先來復(fù)現(xiàn)一下這位讀者描述的問題,首先下載《Spring Boot趣味實(shí)戰(zhàn)課》Swagger 章節(jié)的相關(guān)源碼:
https://github.com/liushuijinger/spring-boot-book/tree/master/05-rest
然后將 Spring Boot 的版本升級(jí)到 3.0+。當(dāng)然,在此之前,你需要先配置好 JDK 17 及以上的 Java 環(huán)境。
以上操作完成后,我們啟動(dòng)項(xiàng)目。這時(shí)你會(huì)看到類似如下的報(bào)錯(cuò):
解決問題
《Spring Boot趣味實(shí)戰(zhàn)課》中使用了 knife4j,所以我們直接基于 knife4j 進(jìn)行配置。還是我們熟悉的步驟,先添加 Maven 依賴:
記得將之前與 Swagger 有關(guān)的依賴全部刪除。
接下來修改 Swagger 的配置類:
最后修改一下 Controller:
其實(shí)就是換了兩個(gè)注解。
改完以后,我們啟動(dòng)項(xiàng)目并訪問 http://localhost:8080/doc.html 來看看效果:

OK,看到這個(gè)界面,說明問題已經(jīng)搞定了。那么這是怎么一回事呢?
收個(gè)尾
導(dǎo)致 Spring Boot 3 與之前的配置不兼容的原因很簡(jiǎn)單——Spring Boot 3 只支持 OpenAPI3 規(guī)范,需要引用 springdoc-openapi 相關(guān)的 Jar。所以,換掉 Maven 依賴,再簡(jiǎn)單修改一下,就 OK 了。
想知道具體是哪些依賴,或者想使用原生 Swagger 的可以戳這里:https://springdoc.org/
一些注解的變化:
@Api
→@Tag
@ApiIgnore
→@Parameter(hidden = true)
or@Operation(hidden = true)
or@Hidden
@ApiImplicitParam
→@Parameter
@ApiImplicitParams
→@Parameters
@ApiModel
→@Schema
@ApiModelProperty(hidden = true)
→@Schema(accessMode = READ_ONLY)
@ApiModelProperty
→@Schema
@ApiOperation(value = "foo", notes = "bar")
→@Operation(summary = "foo", description = "bar")
@ApiParam
→@Parameter
@ApiResponse(code = 404, message = "foo")
→@ApiResponse(responseCode = "404", description = "foo")
彩蛋
彩蛋來啦!視頻沒有聲音,請(qǐng)放心在任意場(chǎng)合觀看!

哈哈,表演個(gè)節(jié)目給大家拜個(gè)晚年,祝大家晚年幸福哦~。如果覺得我這后空翻還不錯(cuò),啊呸!覺得文章寫得不錯(cuò),就轉(zhuǎn)評(píng)贊隨便給一個(gè)吧!