详解JAVA中的@Schema注解

CSDN 2024-08-13 08:35:02 阅读 76

目录

前言1. 基本知识2. 差异

前言

由于更换新项目,最初看到<code>@Schema注解还有些疑问,此处专门补充这方面的知识

对于Java的相关知识推荐阅读:java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)

1. 基本知识

在 Swagger 3 中,引入了 @Schema 注解来描述数据模型,用于取代 Swagger 2 中的 @ApiModelProperty

与 Swagger 2 不同,Swagger 3 使用 @Schema 注解来描述整个数据模型,包括类和属性,使得描述更加一致和清晰

对于swagger2的注解,可看这篇文章补充:

详解JAVA中的@ApiModel和@ApiModelProperty注解

具体代码示例如下:

@Schema(description = "User information")

public class User {

@Schema(description = "User's unique identifier")

private Long id;

@Schema(description = "User's name")

private String name;

// Getters and setters

}

实战代码示例如下:

@Schema(description = "管理后台 - 充值套餐 Response VO")

@Data

@EqualsAndHashCode(callSuper = true)

@ToString(callSuper = true)

public class WalletRechargePackageRespVO extends WalletRechargePackageBaseVO {

@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "9032")

private Long id;

@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)

private LocalDateTime createTime;

}

相应的属性介绍如下:

requiredMode:指定该属性的必需性

Schema.RequiredMode.REQUIRED 表示这个属性是必需example:提供该属性的示例值

展示该属性的一个具体示例

2. 差异

针对swagger2的注解比较

以下是注解的升级过程

注解 swagger2 swagger3
@Api → @Tag @Api 注解用于描述整个 API 控制器或分组 @Tag 注解用于对 API 进行分组
@ApiIgnore → @Parameter(hidden = true) 或 @Operation(hidden = true) 或 @Hidden @ApiIgnore 注解用于忽略某些 API,不在文档中显示 可以使用 @Parameter(hidden = true) 或 @Operation(hidden = true) 或 @Hidden 注解来实现相同的效果
@ApiImplicitParam → @Parameter @ApiImplicitParam 注解用于描述 API 方法的隐式参数 使用 @Parameter 注解
@ApiImplicitParams → @Parameters @ApiImplicitParams 注解用于描述一组隐式参数 使用 @Parameters 注解
@ApiModel → @Schema @ApiModel 注解用于描述数据模型 使用 @Schema 注解
@ApiModelProperty(hidden = true) → @Schema(accessMode = READ_ONLY) @ApiModelProperty(hidden = true) 注解用于隐藏模型属性 使用 @Schema(accessMode = READ_ONLY) 注解,表示属性只读且隐藏
@ApiModelProperty → @Schema @ApiModelProperty 注解用于描述模型属性 使用 @Schema 注解
@ApiOperation(value = “foo”, notes = “bar”) → @Operation(summary = “foo”, description = “bar”) @ApiOperation 注解用于描述 API 方法的操作 使用 @Operation(summary = “foo”, description = “bar”) 注解。
@ApiParam → @Parameter @ApiParam 注解用于描述 API 方法的参数 使用 @Parameter 注解
@ApiResponse(code = 404, message = “foo”) → @ApiResponse(responseCode = “404”, description = “foo”) @ApiResponse 注解用于描述 API 的响应 使用 @ApiResponse(responseCode = “404”, description = “foo”) 注解

对应的版本号差异如下:

swagger2版本:

<code><!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->

<dependency>

<groupId>io.springfox</groupId>

<artifactId>springfox-swagger2</artifactId>

<version>2.3.0</version>

</dependency>

swagger3版本:

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-boot-starter -->

<dependency>

<groupId>io.springfox</groupId>

<artifactId>springfox-boot-starter</artifactId>

<version>3.0.0</version>

</dependency>



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。