返回

轻松搞定!SpringBoot3集成Swagger的正确姿势

后端

SpringBoot 3 中整合 Swagger 的常见错误及解决方案

简介

将 Swagger 集成到 SpringBoot 3 中可以让你轻松地生成 API 文档,从而方便地测试和调试应用程序。但是,在集成过程中,可能会遇到一些错误。本文将深入探讨 SpringBoot 3 集成 Swagger 时最常见的错误之一,并提供详细的解决方案。

错误:创建 bean 失败,名称为 "apiDocumentationScanner",定义在 URL 中

症状

在 SpringBoot 3 中集成 Swagger 时,你可能会遇到以下错误消息:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'apiDocumentationScanner' defined in URL [file:.../spring-boot-autoconfigure-processor-3.0.0.M5.jar!/org/springframework/boot/autoconfigure/http/ApiDocumentationConfiguration.class]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: 'org.springframework.context.annotation.AnnotationConfigApplicationContext org.springframework.context.annotation.AnnotationConfigApplicationContext(java.lang.Class\[], org.springframework.context.annotation.AnnotatedBeanDefinitionReader, java.lang.String...)'

原因

此错误是由 SpringBoot 3 中的 API 文档功能的变化引起的。SpringBoot 3 引入了 SpringDoc2 作为默认的 API 文档工具,取代了早期的 Swagger 版本。

解决方案

要解决此错误,你需要执行以下步骤:

  1. 从 POM 中删除旧的 Swagger 依赖项。
  2. 添加 SpringDoc2 依赖项。 在你的 pom.xml 文件中添加以下依赖项:
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-ui</artifactId>
    <version>2.0.1</version>
</dependency>
  1. 在 application.properties 中添加 SpringDoc2 配置。 添加以下配置:
springdoc.swagger-ui.path=/swagger-ui.html
  1. 使用 @ApiOperation 和 @ApiResponses 注解生成 Swagger 文档。 在你的 Controller 中使用这些注解来 API 的操作和响应。

代码示例

以下是一个使用 SpringDoc2 生成 Swagger 文档的简单示例:

import org.springframework.web.bind.annotation.*;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;

@RestController
public class ExampleController {

    @Operation(summary = "Get a user by ID")
    @ApiResponses(value = {
            @ApiResponse(responseCode = "200", description = "OK"),
            @ApiResponse(responseCode = "404", description = "User not found")
    })
    @GetMapping("/users/{id}")
    public User getUserById(@PathVariable Long id) {
        return new User();
    }
}

常见问题解答

1. SpringBoot 3 中使用的 SpringDoc2 版本是多少?

2.0.1

2. 为什么 SpringBoot 3 中不再使用 Swagger?

SpringBoot 3 引入了 SpringDoc2 作为默认的 API 文档工具,因为它提供了更现代的功能和更广泛的 API 支持。

3. 如何在 SpringBoot 3 中配置 SpringDoc2 的路径?

在 application.properties 文件中设置 springdoc.swagger-ui.path 属性,例如:springdoc.swagger-ui.path=/swagger-ui.html

4. 我可以使用 SpringDoc2 生成 OpenAPI 文档吗?

是的,SpringDoc2 同时支持 OpenAPI 和 Swagger 文档。

5. 是否可以使用 Swagger UI 访问 SpringDoc2 文档?

是的,可以通过在浏览器中输入指定的路径来访问 Swagger UI,例如:http://localhost:8080/swagger-ui.html

结论

通过本文提供的解决方案,你可以解决在 SpringBoot 3 中集成 Swagger 时遇到的错误。通过使用 SpringDoc2 和正确的配置,你可以轻松地生成全面的 API 文档,从而提高应用程序的测试和调试效率。