返回

跨越版本鸿沟:如何将SpringBoot项目平滑升级至3.0

后端

SpringBoot3 进阶指南:告别 Springfox,拥抱 Springdoc 和 Knife4j

Springfox 的没落与 Springdoc 的崛起

随着 SpringBoot3 的横空出世,众多开发者跃跃欲试。然而,在升级过程中,不少人遭遇了棘手的 "java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest" 错误,令人头疼不已。究其原因,罪魁祸首正是 Swagger 版本的不兼容。Springfox,曾经的 Swagger 霸主,在 SpringBoot3 中已退出历史舞台,由 Springdoc 接过衣钵。Springdoc 作为 Springfox 的后起之秀,不仅兼容性更强,还能完美适配 SpringBoot3。

拥抱 Springdoc,告别 ClassNotFoundException

为了彻底解决 "java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest" 错误,推荐使用 Springdoc 替代 Springfox。下面是详细步骤:

  1. 移除 Springfox 依赖: 从 pom.xml 文件中删除 Springfox 的依赖。

  2. 添加 Springdoc 依赖: 在 pom.xml 文件中添加 Springdoc 依赖:

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-ui</artifactId>
    <version>1.6.8</version>
</dependency>
  1. 修改配置: 在 application.properties 文件中配置 Springdoc:
springdoc.swagger-ui.path=/swagger-ui.html
  1. 重启项目: 重新启动项目以使更改生效。

携手 Knife4j,打造极致 API 文档

除了 Springdoc,Knife4j 也是 Swagger 增强利器。使用 Knife4j,您可以轻松创建出美观且功能丰富的 API 文档。

  1. 添加 Knife4j 依赖: 在 pom.xml 文件中添加 Knife4j 依赖:
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>3.0.9</version>
</dependency>
  1. 修改配置: 在 application.properties 文件中配置 Knife4j:
knife4j.production=false
  1. 重启项目: 再次重启项目以完成配置。

常见问题解答

1. 为什么升级 SpringBoot3 后会遇到 "java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest" 错误?

答:由于 SpringFox 在 SpringBoot3 中已被弃用,需要使用 Springdoc 替代。

2. 如何移除 Springfox 依赖?

答:从 pom.xml 文件中删除 Springfox 相关的依赖。

3. 如何添加 Springdoc 和 Knife4j 依赖?

答:在 pom.xml 文件中添加 Springdoc 和 Knife4j 的依赖。

4. Knife4j 有哪些优势?

答:Knife4j 可以帮助创建美观且功能丰富的 API 文档,提供代码生成、mock 测试等功能。

5. Springdoc 和 Knife4j 是否需要同时使用?

答:建议同时使用 Springdoc 和 Knife4j。Springdoc 提供核心 Swagger 功能,而 Knife4j 则增强了文档美观性和实用性。