欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > Springdoc的常用注解(Swagger3标准的OpenAPI 3 规范)

Springdoc的常用注解(Swagger3标准的OpenAPI 3 规范)

2025/4/19 10:09:44 来源:https://blog.csdn.net/m0_51041242/article/details/147289282  浏览:    关键词:Springdoc的常用注解(Swagger3标准的OpenAPI 3 规范)

Springdoc 常用注解与 Swagger2 对比指南

Springdoc官网:https://springdoc.org/
在这里插入图片描述
Swagger2官网:https://swagger.io/
在这里插入图片描述

一、Springdoc 常用注解及对应 Swagger2 注解

以下是 Springdoc 的核心注解及其与 Swagger2 的对比,帮助开发者快速迁移和理解差异:

用途Springdoc (OpenAPI 3)Swagger2 (Springfox)说明
API 分组@Tag(name = "分组名")@Api(tags = "分组名")定义接口模块分组,作用于类或方法。Springdoc 的 @Tag 更灵活,支持 description 字段。
接口方法描述@Operation(summary = "摘要")@ApiOperation(value = "描述")描述单个接口的作用。Springdoc 的 @Operation 支持更多字段,如 tagshidden 等。
参数描述@Parameter(description = "参数说明")@ApiParam("参数说明")描述方法参数。Springdoc 的 @Parameter 支持 requiredexample 等更细粒度配置。
模型字段描述@Schema(description = "字段说明")@ApiModelProperty("字段说明")描述 DTO 或模型的字段。@Schema 支持 examplenullable 等扩展属性。
响应结构定义@ApiResponse(responseCode = "200", description = "成功")@ApiResponse(code = 200, message = "成功")定义接口返回的 HTTP 状态码和描述。Springdoc 使用 responseCode 替代 code
全局安全配置@SecurityScheme + @SecurityRequirement@ApiKeyAuthDefinitionSpringdoc 通过 @SecurityScheme 定义安全方案(如 OAuth2、JWT),并在接口上使用 @SecurityRequirement 绑定。

二、详细注解使用示例
1. API 分组与接口描述
// Springdoc
@RestController
@Tag(name = "用户模块", description = "用户注册、登录、查询等操作")
public class UserController {@Operation(summary = "获取用户信息",description = "根据用户ID查询详细信息",tags = {"查询类接口"})@GetMapping("/users/{id}")public User getUser(@Parameter(description = "用户ID", example = "1001") @PathVariable Long id) {// ...}
}// Swagger2
@RestController
@Api(tags = "用户模块", description = "用户相关操作")
public class UserController {@ApiOperation(value = "获取用户信息", notes = "根据ID查询")@GetMapping("/users/{id}")public User getUser(@ApiParam("用户ID") @PathVariable Long id) {// ...}
}
2. 模型字段描述
// Springdoc
public class User {@Schema(description = "用户ID", example = "1001", requiredMode = Schema.RequiredMode.REQUIRED)private Long id;@Schema(description = "用户名", example = "john_doe", maxLength = 20)private String username;
}// Swagger2
public class User {@ApiModelProperty(value = "用户ID", example = "1001", required = true)private Long id;@ApiModelProperty(value = "用户名", example = "john_doe")private String username;
}
3. 安全认证配置
// Springdoc
@Configuration
@SecurityScheme(name = "BearerAuth",type = SecuritySchemeType.HTTP,scheme = "bearer",bearerFormat = "JWT"
)
public class OpenApiConfig {}@Operation(summary = "删除用户", security = @SecurityRequirement(name = "BearerAuth"))
@DeleteMapping("/users/{id}")
public void deleteUser(@PathVariable Long id) {// ...
}// Swagger2
@Configuration
public class SwaggerConfig {@Beanpublic SecurityConfiguration security() {return new SecurityConfiguration("client-id", "client-secret", "realm","app-name", "apiKey", ApiKeyVehicle.HEADER, "Authorization", ",");}
}@ApiOperation(value = "删除用户")
@ApiImplicitParams({@ApiImplicitParam(name = "Authorization", value = "JWT Token", required = true, dataType = "string", paramType = "header")
})
@DeleteMapping("/users/{id}")
public void deleteUser(@PathVariable Long id) {// ...
}

三、Springdoc 与 Swagger2 的核心差异
对比维度SpringdocSwagger2 (Springfox)
规范支持支持 OpenAPI 3.0+(现代标准,兼容性更强)仅支持 Swagger 2.0(旧版规范)
维护状态活跃维护,适配 Spring Boot 3.x已停止维护(2020年后无更新)
路径匹配策略兼容 Spring Boot 2.6+ 的 PathPatternParser在 Spring Boot 2.6+ 中因路径策略变更可能失效
注解包路径io.swagger.v3.oas.annotationsio.swagger.annotations
异步接口支持支持 Reactive(如 WebFlux)、Servlet 异步对异步接口支持较弱
安全性配置通过 @SecurityScheme 灵活定义多种认证方式配置较为繁琐,依赖 SecurityConfiguration
UI 自定义提供主题切换、路径修改等配置项自定义需修改静态资源或 CSS

四、迁移注意事项
  1. 依赖替换
    移除 springfox-swagger2springfox-swagger-ui,添加 Springdoc 依赖:

    <dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.5.0</version>
    </dependency>
    
  2. 注解包替换
    io.swagger.annotations 替换为 io.swagger.v3.oas.annotations

  3. 配置调整

    • 文档访问路径:Swagger2 的 swagger-ui.html 变为 Springdoc 的 swagger-ui/index.html
    • 分组配置:使用 GroupedOpenApi 替代 Docket
  4. 解决常见问题

    • 注解不生效:检查是否使用了正确的包路径。
    • 文档空白:确保未拦截 /v3/api-docs/swagger-ui/** 路径(如 Spring Security 配置)。

五、总结

Springdoc 作为 Swagger2 的现代替代方案,具有以下优势:

  • 规范先进:支持 OpenAPI 3.0,覆盖 WebSocket、异步接口等场景。
  • 兼容性强:完美适配 Spring Boot 2.6+ 和 3.x。
  • 配置简洁:通过注解和配置类即可实现复杂需求(如安全认证、多分组)。

迁移时只需调整依赖、更新注解包路径,并参考上述对比表修改代码,即可快速升级到更健壮的 API 文档方案。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词