详解JAVA中的@Schema注解

前言

由于更换新项目,最初看到@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的注解比较

以下是注解的升级过程

注解swagger2swagger3
@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版本:

<!-- 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>
  • 29
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码农研究僧

你的鼓励将是我创作的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值