java接口文档工具 swagger2和swagger3对比

maven依赖:

swagger2+swagger3 都支持:

复制代码
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>${swagger.version}</version>
    <exclusions>
        <exclusion>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-models</artifactId>
        </exclusion>
    </exclusions>
</dependency>

maven依赖:

只支持swagger3:

复制代码
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-ui</artifactId>
</dependency>

Swagger2 注解 VS OpenAPI3 注解 完整对照表

springfox-boot-starter 3.x两套都生效,新版优先

一、控制器 & 接口分组

用途 Swagger2(旧) OpenAPI3(新 推荐)
控制器类分组 / 描述 @Api(tags = "模块名") @Tag(name = "模块名", description = "描述")

二、接口方法说明

用途 Swagger2(旧) OpenAPI3(新 推荐)
接口功能简介 @ApiOperation(value = "接口名称", notes = "详细描述") @Operation(summary = "接口名称", description = "详细描述")

三、请求参数注解

用途 Swagger2(旧) OpenAPI3(新 推荐)
普通入参说明 @ApiParam(value = "参数说明") @Parameter(description = "参数说明")
全局忽略参数 @ApiIgnore @Hidden

四、实体类 / VO/DTO 文档

用途 Swagger2(旧) OpenAPI3(新 推荐)
实体类整体描述 @ApiModel(description = "用户实体") @Schema(description = "用户实体")
实体字段说明 @ApiModelProperty(value = "用户名", example = "张三") @Schema(description = "用户名", example = "张三")

五、全局响应 & 错误码

用途 Swagger2(旧) OpenAPI3(新 推荐)
统一响应状态码 @ApiResponses + @ApiResponse @ApiResponses + @ApiResponse(通用保留)

六、权限 / Header 配置

用途 Swagger2(旧) OpenAPI3(新 推荐)
请求头 Token @ApiImplicitParam @RequestHeader + @Parameter

二、关键补充(你项目重点)

  1. 依赖:springfox-boot-starter 3.x
    • 双注解完全兼容、同时生效
    • 冲突时:@Tag / @Operation 优先级 > @Api / @ApiOperation
  2. 包路径区分(防止导错包)
    • 旧版 Swagger2:io.swagger.annotations.xxx
    • 新版 OpenAPI3:io.swagger.v3.oas.annotations.xxx
  3. 强制规范: 新项目全部使用右侧 OpenAPI3 注解,统一风格、方便后续升级。

旧版 Swagger2:

复制代码
@Api(tags = "角色管理")
@RestController
@RequestMapping("/role")
public class RoleController {

    @ApiOperation("角色列表查询")
    @GetMapping("/list")
    public Result list(){ }
}

新版 OpenAPI3:

复制代码
@Tag(name = "角色管理", description = "角色权限相关接口")
@RestController
@RequestMapping("/role")
public class RoleController {

    @Operation(summary = "角色列表查询", description = "分页获取全部角色")
    @GetMapping("/list")
    public Result list(){ }
}
相关推荐
weixin_493503674 小时前
Vue3 前端生成 PDF:会员证书与活动签到表的三种打印方案与踩坑记录
前端·pdf·状态模式
yxlalm4 小时前
Spring AI+RAG 01-项目背景与技术选型
java·人工智能·spring
tedcloud1234 小时前
Wand-Enhancer 怎么搭建?开源 Wand 客户端增强与远程控制工具介绍
大数据·服务器·人工智能·开源·音视频
程序员清风5 小时前
Java 后端高并发设计:线程池、限流、熔断与降级
java·数据库·oracle
Seoyoneh5 小时前
Agentic Workflow编排架构:云客服从“被动响应”迈向“主动执行”的技术实现
java·开发语言·架构
海南java第二人5 小时前
对外 API 如何保证幂等性?插入数据 / 上传表格场景全方案汇总
java·幂等性
tryxr6 小时前
Chat2Excel 文件服务模块上传文件功能开发
java·项目·oss·easyexcel·文件服务
Tangyuewei6 小时前
Java 写 Agent:模型只是组件
java·开发语言
Emily156853598706 小时前
ABB CI867K01 3BSE043660R1
服务器·plc·dcs·abb·ci867k01·3bse043660r1·工控模块
Java陈序员7 小时前
轻量运维面板!一款现代化的服务器控制面板工具!
运维·服务器·python·react.js·github