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

news2025/4/2 3:59:08

一、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
  • 注解优先级:方法级别的注解会覆盖类级别的注解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2325222.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习的一百个概念(4)下采样

前言 本文隶属于专栏《机器学习的一百个概念》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见[《机器学习的一百个概念》 ima 知识库 知识库广场搜索&…

NNI 适配 TensorRT10教程

引言 本文涉及两个框架及其版本分别为 NNI (Neural Network Intelligence) :3.0TensorRT:10.9.0.34 NNI 在文档 Speed Up Quantized Model with TensorRT里描述了如何使用 TensorRT 为NNI量化的模型实现加速,但是从NNI 的源代码https://gi…

多路径 TCP 调度的另一面

参考前面的文章 一个原教旨的多路径 TCP 和 MP-BBR 公平性推演,一直都破而不立,不能光说怎样不好,还得说说现状情况下,该如何是好。 如果 receiver 乱序重排的能力有限(拜 TCP 所赐),如果非要在多路径上传输 TCP&…

vcpkg安装指定版本的库

一.vcpkg安装 使用git将vcpkg源码克隆到本地制定目录(D:\vcpkg),并初始化 git clone https://github.com/microsoft/vcpkg.git cd vcpkg ./bootstrap-vcpkg.sh # Linux/macOS .\bootstrap-vcpkg.bat # Windows 如下图: 二.安…

【工具变量】上市公司供应链稳定性数据两个维度(2013-2023年)

供应链稳定性是指供应链在面对各种内外部因素的冲击和不确定性时,能够保持持续、顺畅运作的能力,而供应链稳定性指数是用于评估企业在其供应链管理中保持稳定性的一个重要指标。本分享数据参考钟涛(2022)、董浩和闫晴(…

Redis场景问题2:缓存击穿

Redis 缓存击穿是指在缓存系统中,大量请求(高并发访问)同时访问一个不存在于缓存中(一般是因为缓存过期或者数据未被加载到缓存)但在数据库中存在的热点数据,从而导致这些请求直接穿透缓存层,涌…

RocketMQ - 从消息可靠传输谈高可用

先稍微介绍下RocketMQ架构。 主从架构 Broker 集群:每个 Broker 分为 Master 和 Slave 角色,Master 负责读写,Slave 作为热备。 同步复制(SYNC_MASTER):消息写入 Master 后,需等待 Slave 同步完…

ES拼音分词自动补全实现

#测试拼音分词 POST /_analyze { "text":"如家酒店真不错", "analyzer": "pinyin" } #这里把拼音的首字母放到这里,也说明了这句话没有被分词,而是作为一个整体出现的 #还把每一个字都形成了一个拼音&#…

EFISH-SBC-RK3576 + 5G模组:无线工业相机与分布式AI质检‌

在智能制造与仓储物流场景中,传统有线工业相机存在部署成本高、灵活性差等痛点。‌eFish-SBC-RK3576‌ 通过 ‌5G无线传输 分布式NPU协同‌,实现跨产线、跨工厂的AI质检系统,检测效率提升300%,布线复杂度降低90%。 ‌1. 系统架构…

C/C++ 基础 - 回调函数

目录 前言 回调函数预备知识 函数指针 什么是函数指针 函数指针的语法 如何用函数指针调用函数 函数指针作为函数的参数 函数指针作为函数返回类型 函数指针数组 回调函数 什么是回调函数 为什么要用回调函数 怎么使用回调函数 总结 前言 在写项目的时候&#x…

【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的消息队列:使用 RabbitMQ 实现异步处

<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、开篇整…

DeepSeek分析仿写选题应该怎么做?

目录 选题分析&#xff1a;AIGC在学术写作中的应用及其与作者背景的关系 1. 选题背景与意义 2. 研究问题 3. 研究方法 4. 主要发现 5. 研究贡献 6. 研究局限与未来方向 7. 结论 8. 未来研究方向 大家好这里是AIWritePaper官方账号&#xff0c;官网&#x1f449;AIWrit…

19840 Dijkstra求最短路2

19840 Dijkstra求最短路2 相较于1&#xff0c;数据增强了&#xff0c;要用堆来优化&#xff0c;也就是优先队列。 ⭐️难度&#xff1a;中等 &#x1f31f;考点&#xff1a;Dijkstra、最短路问题 &#x1f4d6; &#x1f4da; import java.util.*;public class Main {static…

Redis-08.Redis常用命令-有序集合操作命令

一.有序集合操作命令 ZADD key score 1 member1 [score2 member2]&#xff1a; zadd zset 10.0 a 10.5 b ZRANGE key start stop [WITHSCORES]: zrange zset 0 -1 为何顺序为a&#xff0c;c&#xff0c;b&#xff1f; 因为 zrange zset 0 -1 withscores zrange key start …

LLaMA-Factory使用实战

LLaMA-Factory使用实战 项目介绍 项目地址&#xff1a;https://github.com/hiyouga/LLaMA-Factory 中文文档&#xff1a;安装 - LLaMA Factory 快速开始文档&#xff1a;https://zhuanlan.zhihu.com/p/695287607&#xff08;推荐参考&#xff09; 远程服务器通过本地代理加…

读一本书,骑行万里路:与维乐 Angel Rise+骑行看世界

最近读到了一本名为《自行车改变的世界&#xff1a;女性骑行的历史》的书&#xff0c;才发现原来女性的骑行自由来得并不轻易&#xff0c;激励着每一位女性勇敢地踏上骑行之路。而我一直在使用的维乐坐垫品牌&#xff0c;除了产品专业之外&#xff0c;也一直都非常关注女性骑行…

【大模型】SpringBoot整合LangChain4j实现RAG检索实战详解

目录 一、前言 二、LangChain4j 介绍 2.1 什么是LangChain4j 2.2 LangChain4j 主要特点 2.3 Langchain4j 核心组件 三、RAG介绍 3.1 什么是RAG 3.2 RAG工作流程 3.2.1 补充说明 3.3 Embedding模型 3.3.1 RAG实际使用步骤 3.3.2 什么是Embedding 3.3.3 Embedding 技…

流动的梦境:GPT-4o 的自回归图像生成深度解析

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

北大人工智能研究院朱松纯:“中国的AI叙事” 存在认知偏差

3月29日&#xff0c;在2025中关村论坛通用人工智能论坛上&#xff0c;北京通用人工智能学院院长&#xff0c;北京大学人工智能研究院、智能学院院长朱松纯表示&#xff0c;目前&#xff0c;行业对AI的讨论几乎被大模型能力所占据&#xff0c;而基础学科、原始创新与智能本质的研…

习题1.26

解释题&#xff0c;说简单也简单&#xff0c;难在如何表达清楚。 首先解释下代码的变化 (defn expmod[base exp m](cond ( exp 0) 1(even? exp) (mod (square (expmod base (/ exp 2) m)) m):else (mod (* base (expmod base (- exp 1) m)) m)))(defn expmod[base exp m](co…