当前位置: 首页 > news >正文

Spring学习笔记07——SpringBoot常用注解记录

一、Lombok 注解

@Data:生成所有字段的 getter/setter、toString()、equals() 和 hashCode()。

@Getter / @Setter:单独为所有字段或指定字段生成 getter/setter。

import lombok.Data;

@Data
public class User {
    private Long id;
    private String name;
}

编译后,Lombok 会为 id 和 name 自动生成 getId()、setId()、getName()、setName() 等方法。
IDE 和编译器会“看到”这些方法,但源码中无需手动编写。

二、Swagger标记

在 Spring Boot 项目中集成 Swagger(如 Swagger2OpenAPI 3)时,常用的注解主要分为两类:

  1. Swagger 核心注解(用于描述 API 信息、参数、返回值等)。
  2. SpringFox 或 SpringDoc 注解(根据使用的 Swagger 实现库选择)。

以下是常用的 Swagger 注解及其作用:


1. 通用 Swagger 注解(OpenAPI 规范)

适用于 SpringDoc OpenAPI 3(推荐)或 SpringFox Swagger2(旧版)。

注解作用示例
@Operation描述单个接口(方法)的作用@Operation(summary = "创建用户", description = "根据 User 对象创建用户")
@Parameter描述接口的单个参数@Parameter(name = "id", description = "用户ID", required = true)
@Schema描述模型(DTO/Entity)的字段信息@Schema(description = "用户姓名", example = "张三")
@ApiResponse描述接口的响应状态码和消息@ApiResponse(responseCode = "200", description = "成功返回用户数据")
@Tag对接口分组(如 Controller 级别的分类)@Tag(name = "用户管理", description = "用户相关接口")

2. SpringFox Swagger2 注解(旧版,逐渐淘汰)

如果使用 springfox-boot-starter(Swagger2),常用以下注解:

注解作用示例
@Api标记 Controller 类的功能(已废弃,推荐用 @Tag@Api(tags = "用户管理")
@ApiOperation描述接口方法(旧版,推荐用 @Operation@ApiOperation(value = "创建用户", notes = "新增用户")
@ApiParam描述方法参数(旧版,推荐用 @Parameter@ApiParam(value = "用户ID", required = true)
@ApiModel描述 DTO/Entity 类(旧版,推荐用 @Schema@ApiModel(description = "用户实体")
@ApiModelProperty描述类的字段(旧版,推荐用 @Schema@ApiModelProperty(value = "用户名", example = "张三")

3. SpringDoc OpenAPI 3 注解(新版推荐)

如果使用 springdoc-openapi-starter-webmvc-ui(OpenAPI 3),优先使用以下注解:

注解作用示例
@Hidden隐藏接口或字段(不展示在 Swagger UI)@Hidden
@ArraySchema描述数组类型的字段@ArraySchema(schema = @Schema(type = "integer"))

示例代码对比

旧版(SpringFox Swagger2)
@Api(tags = "用户管理")
@RestController
public class UserController {

    @ApiOperation("根据ID查询用户")
    @GetMapping("/user/{id}")
    public User getUser(@ApiParam("用户ID") @PathVariable Long id) {
        return userService.findById(id);
    }
}

@ApiModel("用户实体")
public class User {
    @ApiModelProperty("用户ID")
    private Long id;
    
    @ApiModelProperty("用户名")
    private String name;
}
新版(SpringDoc OpenAPI 3)
@Tag(name = "用户管理", description = "用户相关接口")
@RestController
public class UserController {

    @Operation(summary = "根据ID查询用户", description = "返回用户详细信息")
    @GetMapping("/user/{id}")
    public User getUser(@Parameter(description = "用户ID") @PathVariable Long id) {
        return userService.findById(id);
    }
}

public class User {
    @Schema(description = "用户ID", example = "1")
    private Long id;
    
    @Schema(description = "用户名", example = "张三")
    private String name;
}

如何选择?

  1. 新项目:直接使用 SpringDoc OpenAPI 3springdoc-openapi),注解更符合 OpenAPI 规范。
  2. 旧项目:如果已用 springfox-swagger2,可逐步迁移到 springdoc-openapi

注意事项

  • 确保依赖正确:
    • SpringFox(Swagger2): springfox-boot-starter(已停止维护)。
    • SpringDoc(OpenAPI 3): springdoc-openapi-starter-webmvc-ui
  • 注解优先级:方法级别的注解会覆盖类级别的注解。

相关文章:

  • WEB安全--RCE--RCE的危险函数
  • Spring Boot 日志 配置 SLF4J 和 Logback
  • 在bootstrap下实现万年历
  • 分享一些新版GPT-4o使用方式!能多模态生图!
  • 【算法基础】递归与递推
  • DeepSeek学术写作过程中如何分析文献中的论证方法
  • Vue3 其它API customRef
  • 【STL】queue
  • Python 3 与 MySQL 数据库连接:mysql-connector 模块详解
  • 【王阳明代数讲义】识人用人之道与面相智慧
  • 【Java】Java核心知识点与相应面试技巧(八)——类与对象(三)
  • 无线局域网
  • Python数据可视化-第2章-使用matplotlib绘制简单图表
  • AI三大主义 和 深度学习三大主义
  • arthas之jvm相关命令
  • C++ utility头文件深度解析:从pair到移动语义的完全指南
  • 饿了么 bx-et 分析
  • 01_MySQL概述
  • kafka 与 RocketMQ对比
  • Unity 一个丝滑的3D下--XY轴2D平台跳跃--控制器模板(FSM)
  • 社交网站 备案/seoul
  • 深圳专业做网站专业公司/推广营销软件app
  • 半成品网站/免费b站在线观看人数在哪
  • 网站开发步骤说明书是什么/建网站软件工具
  • 恶意网站是怎么实现的/下载百度语音导航地图安装
  • 网站建设记录过程/友情链接买卖