SpringBoot3整合Swagger

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

之前一直使用SpringBoot2与Swagger2,所以感觉都很顺利,因网上资源也比较多问题不大。

但是自从更新idea2024、jdk17之后,很多依赖都是比较新的版本,之前的很多东西需要去适应新版本就会出现很多bug,网上的很多办法不好用,只好在改好bug之后记录一下,以便大家一起学习。


一、SpringBoot3整合Swagger3出现的问题

我用的版本是

SpringBoot:3.4.4

springfox 引入的依赖:

        <!--swagger -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-boot-starter</artifactId>
        <version>3.0.0</version>
    </dependency>

yml配置

#集成Swagger高版本启动异常配置,低版本可以不配置
spring:
  mvc:
    pathmatch:
      matching-strategy: ANT_PATH_MATCHER

启动类

@EnableOpenApi  
@EnableSwagger2 

swagger3启动注解

swagger配置类

网上有很多自己取,启动成功以后项目启动正常,但是swagger访问页面一直404

在网上看了很多方法都不可用

只要是无法加载到swagger-ui的静态资源,页面报错

项目编译没有问题,但是启动运行的时候报错 javax.servlet.http.HttpServletRequest ClassNotFoundException 异常。

页面一直循环弹窗。头大~

这是因为 SpringFox3.0.0 底层有 Swagger2 和 Swagger3 两套依赖,其中 Swagger2 底层依赖 javax 模块,但是在 SpringBoox3 的版本中已经彻底移除了 javax 模块,改为使用 jakarta ,所以才会报这个错误。

参考:SpringBoot 3.0 升级之 Swagger 升级_spring boot 3使用swagger-CSDN博客

二、openapi3

引入依赖

删除之前的Springfox-3.0.0 添加openAip3依赖:
		<dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
            <version>2.0.4</version>
		</dependency>

yml配置

# swagger-ui custom path
springdoc:
  api-docs:
    enabled: true # 开启OpenApi接口
  swagger-ui:
    enabled: true # 开启swagger界面,依赖OpenApi,需要OpenApi同时开启
    path: /index.html # 自定义路径,默认为"/swagger-ui/index.html"

 编写Swagger配置类

@Configuration
class Swagger2Utils{


    @Bean
    public OpenAPI springOpenAPI() {
        // 访问路径:http://localhost:8015/swagger-ui/index.html
        return new OpenAPI().info(new Info()
                        .title("测试文档")
                        .contact(new Contact())
                        .description("测试专用信息管理平台提供的 RESTful API")
                        .version("v1.0.0")
                        .license(new License().name("测试版本1.0").url("http://springdoc.org")))
                        .externalDocs(new ExternalDocumentation()
                        .description("测试接口外部文档")
                        .url("https://springshop.wiki.github.org/docs"));
    }

访问成功


总结

提示

参考:Springdoc-OpenAPI 使用教程-CSDN博客

Spring Boot 3.x 引入springdoc-openapi (内置Swagger UI、webmvc-api)_springdoc-openapi-starter-webmvc-ui-CSDN博客

Java21 + SpringBoot3整合springdoc-openapi,自动生成在线接口文档,支持SpringSecurity和JWT认证方式 - 程序员偏安 - 博客园 (cnblogs.com)

好的,针对您的问题,我可以给出以下步骤: 1. 在 pom.xml 文件中添加 Swagger2 和 Swagger UI 的依赖: ```xml <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>3.0.0</version> </dependency> ``` 2. 创建 Swagger 配置类,用于配置 Swagger 的基本信息和扫描的包路径: ```java @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller")) .paths(PathSelectors.any()) .build() .apiInfo(apiInfo()); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("Spring Boot 3 整合 Swagger") .description("使用 Swagger 构建 API 文档") .version("1.0.0") .build(); } } ``` 3. 在 Controller 类中添加 Swagger 注解,用于描述接口信息: ```java @RestController @RequestMapping("/user") @Api(tags = "用户管理") public class UserController { @GetMapping("/{id}") @ApiOperation(value = "根据 ID 获取用户信息", notes = "根据传入的 ID 参数获取用户信息") @ApiImplicitParam(name = "id", value = "用户 ID", required = true, dataType = "Long", paramType = "path") public User getUserById(@PathVariable Long id) { // 根据 ID 查询用户信息 return userService.getUserById(id); } // 其他接口方法... } ``` 4. 启动应用程序,访问 http://localhost:8080/swagger-ui.html 即可查看生成的 API 文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值