SpringBoot3使用Swagger3

版本

springboot3.4.2 + JAVA 17

一、引入Swagger3依赖

<dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
            <version>2.0.4</version>
</dependency>

二、快速启动

1.在application.yml中配置
# swagger-ui custom path
springdoc:
  swagger-ui:
    path : /swagger-ui.html
2.或者properties文件,则配置

# swagger-ui custom path

springdoc.swagger-ui.path=/swagger-ui.html

3.启动项目访问swagger

访问http://localhost:9090/swagger-ui/index.html#/

其中的9090 改成你项目后端使用的端口,注意不能省略后面的index.html

三、使用注解标注接口

Swagger配置文件
package com.sumo.ipd.config;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class Swagger3Config {
    @Bean
    public OpenAPI springOpenAPI() {
        // 访问路径:http://localhost:9090/swagger-ui/index.html
        return new OpenAPI().info(new Info()
                .title("SpringDoc API")
                .description("SpringDoc Simple Application")
                .version("0.0.1"));
    }
}

Swagger2 和 Swagger3 使用的是完全不同的两套注解,所以原本使用 Swagger2 相关注解的代码页需要完全迁移,改为使用 Swagger3 的注解。

Swagger2

Swagger3

@Api

@Tag

@ApiOperation

@Operation

@ApiImplicitParams

@Parameters

@ApiImplicitParam

@Parameter

@ApiModel

@Schema

@ApiModelProperty

@Schema

@ApiResponses

@ApiResponses

@ApiResponse

@ApiResponse

@ApiIgnore

@Hidden 或者 其他注解的 hidden = true 属性

举例五种常用
@Api

Swagger2 代码

@Api(value = "用户接口", tags = "UserController")

Swagger3 代码

@Tag(name = "UserController", description = "用户接口")

@ApiOperation

Swagger2 代码

@ApiOperation(value = "查询用户数据")

Swagger3 代码

@Operation(description = "查询用户数据")

@ApiImplicitParam

Swagger2 代码

@ApiImplicitParams({
     @ApiImplicitParam(name = "currentPage", value = "当前页码", dataTypeClass = Integer.class, required = true),
     @ApiImplicitParam(name = "size", value = "当前页大小", defaultValue = "10", dataTypeClass = Integer.class),
     @ApiImplicitParam(name = "queryUser", value = "用户查询条件", dataTypeClass = User.class)
})

Swagger3 代码

@Parameters({
    @Parameter(name = "currentPage", description = "当前页码", required = true),
    @Parameter(name = "size", description = "当前页大小", example = "10"),
    @Parameter(name = "queryUser", description = "用户查询条件")
})
@ApiModel

Swagger2 代码

@ApiModel(value = "用户信息实体类")

Swagger3 代码

@Schema(name = "用户名称")

@ApiModelProperty

Swagger2 代码

@ApiModelProperty(value = "用户名称")

Swagger3 代码

@Schema(name = "用户名称")

### Spring Boot 3配置 Swagger 3 实现接口文档正常访问 为了使 Spring Boot 3Swagger 3 正常工作并放行接口文档的访问,需要按照特定的方式添加依赖项和配置。 #### 添加 Maven 依赖 对于 Spring Boot 3 版本,推荐使用 `springdoc-openapi` 来替代旧版的 `springfox` 库。以下是适用于 Spring Boot 3 的正确依赖声明: ```xml <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.0.4</version> </dependency> ``` 此依赖会自动配置大多数必要的组件来启动 OpenAPI UI 页面[^1]。 #### 编写配置类 (可选) 通常情况下不需要额外编写配置类,因为 `springdoc-openapi` 已经提供了默认配置。如果确实有自定义需求,则可以通过创建一个 Java 配置文件来进行调整: ```java import org.springframework.context.annotation.Configuration; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Info; @Configuration public class SwaggerConfig { @Bean public OpenAPI customOpenAPI() { return new OpenAPI() .info(new Info().title("My API").version("v1")); } } ``` 这段代码用于设置 API 文档的基础信息,比如标题和版本号[^2]。 #### 安全配置中的路径排除 当应用集成了安全框架如 Spring Security 后,需确保 `/swagger-ui.html` 或者新的默认 URL 路径 `/v3/api-docs/**`, `/swagger-ui/index.html` 不被拦截器保护起来。可以在 WebSecurityConfigurerAdapter 继承的安全配置中加入如下规则: ```java @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/v3/api-docs/**", "/swagger-ui/**").permitAll() .anyRequest().authenticated(); } ``` 这一步骤非常重要,它允许未认证用户也能浏览 API 文档页面[^3]。 通过以上步骤可以成功地在 Spring Boot 3 上部署并开放访问 Swagger 接口文档的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿垂爱挖掘

谢谢大家的鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值