展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > SpringBoot集成SpringDocOpenAPI(替代SpringFox/Swagger2)的完整步骤

SpringBoot集成SpringDocOpenAPI(替代SpringFox/Swagger2)的完整步骤

SpringBoot集成SpringDocOpenAPI替代SpringFox,2.x与3.x依赖版本不同。引入依赖后通过配置类自定义文档标题,使用@Tag、@Operation等注解标注接口,启动后访问/swagger-ui/index.html。需注意SpringSecurity放行资源及生产环境关闭文档。

一、先说明几个核心点,免得走弯路 SpringFox(也就是老版 Swagger2)在 SpringBoot 2.6+ 和 3.x 上兼容性确实一言难尽,各种报错。所以这篇直接用 **SpringDoc OpenAPI 3**,页面依然是熟悉的 Swagger UI 风格。 SpringBoot2.x 和 3.x 的依赖版本不一样,下面会标注清楚。 全程步骤式操作,复制就能跑起来。

前置说明

最终访问地址:http://localhost:你的端口/swagger-ui/index.html

第 1 步:引入 Ma ven 依赖 pom.xml

情况 A:SpringBoot 3.x(JDK17+)



    org.springdoc
    springdoc-openapi-starter-webmvc-ui
    2.5.0

情况 B:SpringBoot 2.x(JDK8 / JDK11)


    org.springdoc
    springdoc-openapi-ui
    1.7.0

引入后刷新 Ma ven,等依赖下载完即可。

第 2 步:创建 Swagger 配置类(可选,用于修改文档标题、描述)

新建 SwaggerOpenApiConfig.ja va,放在 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 SwaggerOpenApiConfig {
    @Bean
    public OpenAPI openAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title("项目后端接口文档")     //文档标题
                        .version("V1.0")               //版本
                        .description("所有业务接口在线调试文档")); //描述
    }
}

不写这个配置类也能正常打开 Swagger,只是顶部没有自定义标题。

第 3 步【核心】给你的 Controller 接口添加注解(让接口显示在文档)

OpenAPI3 常用注解对照表

注解

作用

@Tag(name = "模块名称")

加在 Controller 类上,划分接口模块

@Operation(summary = "接口名称",description = "详细描述")

标记单个接口

@Parameter(description = "参数说明")

url 传参说明

@Schema(description = "字段注释")

实体类、DTO 字段注释

其实不加注解也能用。SpringDoc 会自动扫描所有 @RestController,直接生成文档。

Controller 完整示例

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/user")
@Tag(name = "用户管理模块")
public class UserController {
    @GetMapping("/get")
    @Operation(summary = "根据ID获取用户信息", description = "传入用户id,查询基础用户数据")
    public String getUser(Long userId){
        return "用户信息";
    }
}

DTO / 实体类示例(返回对象展示注释)

在 Swagger 文档中,当接口返回或接收对象时,字段上的 @Schema 注解能让文档清晰地展示每个字段的含义和示例值。

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

@Data
@Schema(description = "用户返回实体")
public class UserDTO {
    @Schema(description = "用户唯一ID", example = "1001")
    private Long userId;

    @Schema(description = "用户姓名", example = "张三")
    private String userName;

    @Schema(description = "用户邮箱", example = "zhangsan@example.com")
    private String email;

    @Schema(description = "创建时间", example = "2023-10-01 12:00:00")
    private String createTime;
}

关键点:

@Schema(description = "..."):用于描述整个类或单个字段的作用。

@Schema(example = "..."):提供字段的示例值,方便在 Swagger UI 中直接测试。

实体类(如 JPA Entity)的注解用法完全相同,但通常用于数据库映射。

确保导入正确的包:import io.swagger.v3.oas.annotations.media.Schema;,不要用旧版 Swagger2 的 @ApiModel。

这样配置后,Swagger 文档中该对象的字段就会显示清晰的注释和示例,可读性大幅提升。

第 4 步:启动项目,访问文档地址

http://localhost:8080/swagger-ui/index.html

把 8080 替换成你项目的 server.port 端口。

如果打不开页面:往下看【常见问题排查】

成功了

SpringBoot集成SpringDocOpenAPI(替代SpringFox/Swagger2)的完整步骤

第 5 步(可选):SpringSecurity / 拦截器放行 swagger 资源

如果项目使用 SpringSecurity、自定义拦截器,会拦截 swagger 地址,页面无法加载,需要放行地址:

/v3/api-docs/**
/swagger-ui/**
/swagger-ui/index.html

SpringSecurity 放行示例

@Override
public void configure(HttpSecurity http) throws Exception {
    http.authorizeHttpRequests()
            .requestMatchers("/v3/api-docs/**","/swagger-ui/**").permitAll()
            .anyRequest().authenticated();
}

自定义 WebMvc 拦截器放行

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(loginInterceptor)
            .addPathPatterns("/**")
            .excludePathPatterns("/v3/api-docs/**","/swagger-ui/**");
}

第 6 步(可选)区分环境:只开发环境开启 Swagger

一般生产环境关闭接口文档,用 @ConditionalOnProperty 修改配置类:

@Configuration
// yml配置 springdoc.enable=true 才开启
@ConditionalOnProperty(name = "springdoc.enable", ha vingValue = "true")
public class SwaggerOpenApiConfig {
    // ...代码不变
}

application.yml

springdoc:
  enable: true # dev开启;prod改为false

高频踩坑排查清单(重点!)

问题 1:打开页面,但是一片空白,看不到自己写的接口

  1. Controller 必须加 @RestController
  2. 接口方法必须是 public
  3. 启动项目后不要直接访问静态 html,先让 Spring 加载所有 Controller
  4. 检查请求路径是否有统一前缀 server.servlet.context-path,访问地址要带上前缀

问题 2:404 找不到页面

核对地址!

✅ 正确:/swagger-ui/index.html

❌ 旧 swagger2 地址 /swagger-ui.html 在 SpringDoc 中失效

问题 3:实体类返回值不显示注释

确认导入注解包:

import io.swagger.v3.oas.annotations.media.Schema;

不要导错旧 swagger2 的@ApiModel

问题 4:SpringBoot3 启动报错

必须使用 springdoc-openapi-starter-webmvc-ui,不能使用 2.x 旧依赖

补充:如果你执意使用老版本 Swagger2(SpringFox,不推荐)

pom 依赖


    io.springfox
    springfox-swagger2
    2.9.2


    io.springfox
    springfox-swagger-ui
    2.9.2

配置类

import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableSwagger2
public class Swagger2Config {
    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                // 重点!修改为你的controller包路径
                .apis(RequestHandlerSelectors.basePackage("com.xxx.controller"))
                .build();
    }
}

访问地址:http://localhost:8080/swagger-ui.html

SpringBoot 2.6 以上必须额外配置 yml 解决路径匹配报错

spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

问题5、本地有Swagger UI文件吗

你在项目目录里找不到任何 swagger-ui 的 HTML/CSS/JS 文件。

Swagger UI 的静态文件打包在 JAR 依赖包内部。

SpringBoot集成SpringDocOpenAPI(替代SpringFox/Swagger2)的完整步骤

SpringBoot集成SpringDocOpenAPI(替代SpringFox/Swagger2)的完整步骤

SpringBoot集成SpringDocOpenAPI(替代SpringFox/Swagger2)的完整步骤

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
编程开发
相关文章 更多
精品专题 更多
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

IOS软件

正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

AI

正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

Mac软件 更多
WPS Office macOS版
WPS Office macOS版

WPS Office是一款面向macOS用户的综合办公套件,将文字处理、电子表格、演示文稿、PDF工具、模板与云协作整合在同一应用中。它兼容常见Microsoft Office格式,支持Intel及Apple芯片Mac,基础功能可免费使用,

Shapr3D macOS版
Shapr3D macOS版

Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。

REAPER macOS版
REAPER macOS版

REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。

Ableton Live macOS版
Ableton Live macOS版

Ableton Live 是面向音乐制作人与现场表演者的数字音频工作站,提供编曲视图、独具特色的现场视图、音频录制、MIDI创作、实时变速、乐器及效果器。Mac版原生支持Apple芯片,并可连接音频接口、MIDI控制器和第三方插件。

Adobe After Effects macOS版
Adobe After Effects macOS版

Adobe After Effects 是面向动态图形、影视特效与视频合成的专业创作软件。它提供关键帧动画、遮罩抠像、运动跟踪、三维空间、文字动画和表达式等工具,并可与 Premiere Pro、Photoshop、Illustrator

Adobe Audition macOS版
Adobe Audition macOS版

Adobe Audition 是面向播客、影视后期、音乐制作及内容创作者的专业音频工作站,提供波形精修、多轨录制与混音、频谱编辑、降噪修复、响度匹配和效果处理工具,并可与 Adobe Premiere 协同完成视频声音制作。

Adobe Bridge macOS版
Adobe Bridge macOS版

Adobe Bridge 是面向摄影师、设计师及内容团队的免费数字资产管理工具,可集中预览照片、视频和 Adobe 项目文件,并利用评级、标签、关键词、元数据、筛选与收藏集完成分类检索。它还支持批量重命名、格式导出、相机导入及 Camera

Adobe Illustrator macOS版
Adobe Illustrator macOS版

Adobe Illustrator 是 Adobe 推出的专业矢量图形设计软件,适合在 Mac 上制作标志、图标、插画、包装、信息图及印刷版面。它以路径和锚点构建可无损缩放的图形,并提供钢笔、形状、文字、图像描摹、渐变、画板及生成式功能。

Adobe InDesign macOS版
Adobe InDesign macOS版

Adobe InDesign 是面向印刷品与数字出版物的专业版面设计软件,可在 Mac 上制作书籍、杂志、宣传册、海报、报告及交互式文档。它提供精细的文字样式、网格、母版、长文档管理和印前输出能力。

Adobe Lightroom Classic macOS版
Adobe Lightroom Classic macOS版

Adobe Lightroom Classic 是面向桌面摄影工作流的照片管理与后期处理软件,可将原始照片保存在本地硬盘,通过目录、关键词、评分和收藏夹高效整理图库,并提供 RAW 冲印、蒙版、镜头校正、批量同步及多格式导出等功能。

Adobe Media Encoder macOS版
Adobe Media Encoder macOS版

Adobe Media Encoder 是 Adobe 推出的专业音视频编码与转码工具,可通过队列、预设和监视文件夹批量完成格式转换、代理文件创建及多平台成片输出,并与 Premiere Pro、After Effects 等软件紧密协作。

Adobe Photoshop macOS版
Adobe Photoshop macOS版

Adobe Photoshop 是面向摄影师、设计师和内容创作者的专业图像处理软件,提供图层、蒙版、选区、修复、调色、文字排版、智能对象及生成式编辑等能力。Mac 版支持 Intel 与 Apple Silicon 处理器。

WINDOWS 更多
Adobe Illustrator Windows版
Adobe Illustrator Windows版

Adobe Illustrator 是用于绘制矢量图形、插画、图标、徽标和版式的专业设计工具。它以路径和锚点为核心,作品放大后仍能保持清晰,并提供画板、文字、渐变、图像描摹及精确变换等功能,适合品牌视觉、印刷物料、数字界面和商业插画创作。

Adobe Bridge Windows版
Adobe Bridge Windows版

Adobe Bridge 是 Adobe 推出的创意资产管理工具,可集中预览、分类和查找照片、视频、PDF及多种设计文件,并支持元数据、关键词、评级、批量重命名和格式导出。它可与 Photoshop、Illustrator 等应用衔接,

Affinity Photo Windows版
Affinity Photo Windows版

Affinity Photo 是一款面向摄影师、修图师和视觉设计人员的桌面图像编辑工具,提供 RAW 显影、多图层合成、蒙版、实时滤镜、批处理和色彩管理等功能。原独立产品已停止销售,其照片编辑能力已延续至免费的新 Affinity 应用;

Adobe Lightroom Classic Windows版
Adobe Lightroom Classic Windows版

Adobe Lightroom Classic 是面向 Windows 桌面摄影工作流的照片管理与无损编辑工具,可通过目录集中整理大型图库,并完成 RAW 显影、局部蒙版、批量调整、打印和多格式导出。它强调本地文件管理与精细控制,

Figma Windows版
Figma Windows版

Figma 是面向产品设计与开发团队的云端协作平台,可在 Windows 桌面客户端中完成界面绘制、组件管理、交互原型、评论评审和开发交付。文件保存在云端,多名成员能够同步编辑并共享设计系统;官方同时提供免费 Starter 方案及按席位计

Affinity Designer Windows版
Affinity Designer Windows版

Affinity Designer 是面向矢量图形、数字插画和界面设计的专业创作工具,可在矢量、像素与导出工作区之间快速切换。它提供曲线编辑、形状构建、画板、排版、图层和专业色彩管理,并支持常见设计文件的导入及多种印刷、网页格式输出。

Capture One Pro Windows版
Capture One Pro Windows版

Capture One Pro 是面向摄影师和影像团队的专业桌面照片处理工具,提供相机定制色彩配置、RAW转换、图层与蒙版、联机拍摄、目录及会话管理等功能。它适合棚拍、人像、商业产品、婚礼和风光摄影,

Adobe Acrobat Pro Windows版
Adobe Acrobat Pro Windows版

Adobe Acrobat Pro 是面向专业 PDF 工作的综合解决方案,可在 Windows 中创建、编辑、转换、比较、整理和保护文档,并支持表单、电子签名、扫描件文字识别及敏感信息永久遮盖。订阅还包含网页、移动服务和云端协作能力,

Adobe After Effects Windows版
Adobe After Effects Windows版

Adobe After Effects 是面向动态图形、动画与影视视觉特效制作的专业工具,可完成关键帧动画、图层合成、遮罩跟踪、抠像、文字动画和二维三维元素整合。Windows 版通过 Adobe Creative Cloud 安装及更新,

DaVinci Resolve Windows版
DaVinci Resolve Windows版

DaVinci Resolve是Blackmagic Design推出的一体化影视后期工具,将素材管理、非线性剪辑、专业调色、Fusion视觉特效、Fairlight音频处理和成片交付整合在统一工程中。免费版已覆盖多数个人创作需求,

Adobe Media Encoder Windows版
Adobe Media Encoder Windows版

Adobe Media Encoder 是 Adobe 面向视频与音频制作流程提供的专业编码和转码工具,可批量处理媒体文件、创建代理、套用输出预设并监控文件夹自动执行任务。它与 Premiere、After Effects、Audition

Cinema 4D Windows版
Cinema 4D Windows版

Cinema 4D是Maxon推出的专业三维创作软件,将建模、动画、MoGraph动态图形、粒子与动力学模拟、材质灯光及Redshift渲染整合在统一工作环境中,适用于广告包装、影视特效、产品和建筑可视化、游戏素材等制作场景。