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

SpringBoot 常用注解通俗解释

SpringBoot 常用注解通俗解释

一、启动类相关

1. @SpringBootApplication  
   • 作用:这是SpringBoot项目的"总开关",放在主类上

   • 通俗理解:相当于对电脑说:"开机!我要用SpringBoot了!"

   • 包含三个小功能:

     ◦ `@Configuration`:告诉Spring这里有些配置

     ◦ `@EnableAutoConfiguration`:让SpringBoot自动配置

     ◦ `@ComponentScan`:让Spring去扫描当前包下的组件


二、控制器相关(Controller)

2. @RestController  
   • 作用:标记这是一个控制器,返回JSON数据

   • 通俗理解:挂个牌子"这里是接待处",来的请求都转成JSON格式回复

   • 对比:`@Controller`是返回网页,`@RestController`是返回数据


3. @RequestMapping  
   • 作用:定义请求路径

   • 通俗理解:给办公室贴门牌号,比如`/user`就是"用户办公室"

   • 示例:`@RequestMapping("/api/users")` → 访问路径是`http://地址/api/users`


4. @GetMapping / @PostMapping  
   • 作用:指定GET/POST等请求方式

   • 通俗理解:

     ◦ `@GetMapping`:只接受"敲门"(浏览器直接访问)

     ◦ `@PostMapping`:只接受"递纸条"(表单提交)


5. @PathVariable  
   • 作用:获取URL中的变量

   • 通俗理解:从网址中抠出数字/文字

   • 示例:  

     ```java
     @GetMapping("/users/{id}")  // 访问/users/123
     public String getUser(@PathVariable Long id) {
         return "找到用户"+id;  // id=123
     }
     ```

6. @RequestParam  
   • 作用:获取请求参数

   • 通俗理解:从网址问号后面拿参数

   • 示例:  

     ```java
     // 访问 /search?keyword=手机
     @GetMapping("/search")
     public String search(@RequestParam String keyword) {
         return "正在搜索:" + keyword;  // keyword="手机"
     }
     ```

7. @RequestBody  
   • 作用:获取请求体中的JSON数据

   • 通俗理解:收快递(接收前端发来的JSON包裹)

   • 示例:  

     ```java
     @PostMapping("/users")
     public User addUser(@RequestBody User user) {
         // 前端发来JSON自动变成User对象
         return userService.save(user);
     }
     ```

三、服务层相关(Service)

8. @Service  
   • 作用:标记这是一个服务类

   • 通俗理解:挂个牌子"这里是业务处理中心"

   • 特点:通常包含业务逻辑,比如计算、数据处理等


9. @Transactional  
   • 作用:声明事务(要么全部成功,要么全部失败)

   • 通俗理解:打包操作,要么全部完成,要么全部取消

   • 示例:  

     ```java
     @Transactional
     public void transferMoney(Long from, Long to, BigDecimal amount) {
         // 扣钱和加钱要么都成功,要么都失败
         accountService.debit(from, amount);
         accountService.credit(to, amount);
     }
     ```

四、数据访问层(Repository)

10. @Repository  
    ◦ 作用:标记这是数据访问组件

    ◦ 通俗理解:挂个牌子"这里是数据库操作员"

    ◦ 注意:用JPA时通常继承`JpaRepository`,可以不加这个注解


五、依赖注入

11. @Autowired  
    ◦ 作用:自动装配依赖对象

    ◦ 通俗理解:需要什么工具,喊一声"给我拿个XXX",Spring就会递给你

    ◦ 示例:  

      ```java
      @Service
      public class UserService {
          @Autowired  // Spring自动把UserRepository实例放进来
          private UserRepository userRepo;
      }
      ```

六、实体类相关(Entity)

12. @Entity  
    ◦ 作用:标记这是数据库表对应的类

    ◦ 通俗理解:给Java类贴标签"我是数据库里的一张表"


13. @Id  
    ◦ 作用:标记这是主键字段

    ◦ 通俗理解:给字段贴标签"这是我的身份证号"


14. @Column  
    ◦ 作用:定义字段属性

    ◦ 通俗理解:给字段加备注说明

    ◦ 示例:  

      ```java
      @Column(name = "user_name", nullable = false, length = 50)
      private String username;
      ```

七、配置相关

15. @Configuration  
    ◦ 作用:声明这是一个配置类

    ◦ 通俗理解:挂个牌子"这里是工具配置中心"


16. @Bean  
    ◦ 作用:声明一个方法返回的对象交给Spring管理

    ◦ 通俗理解:在配置中心里放个新工具,大家都可以用

    ◦ 示例:  

      ```java
      @Configuration
      public class AppConfig {
          @Bean
          public PasswordEncoder passwordEncoder() {
              return new BCryptPasswordEncoder();
          }
      }
      ```

八、其他常用

17. @Component  
    ◦ 作用:通用的组件注解

    ◦ 通俗理解:万用标签,可以贴在任何需要Spring管理的类上


18. @Value  
    ◦ 作用:注入配置文件中的值

    ◦ 通俗理解:从application.properties里读取设置

    ◦ 示例:  

      ```java
      @Value("${app.page.size}")  // 对应配置文件中的app.page.size=10
      private int pageSize;
      ```

快速记忆口诀

• 开机:`@SpringBootApplication`

• 接待:`@RestController` + `@RequestMapping`

• 收参数:`@PathVariable`、`@RequestParam`、`@RequestBody`

• 业务:`@Service` + `@Transactional`

• 数据库:`@Entity` + `@Id` + `@Column`

• 要工具:`@Autowired`

• 配东西:`@Configuration` + `@Bean`

相关文章:

SpringBoot 常用注解通俗解释

SpringBoot 常用注解通俗解释 一、启动类相关 1. SpringBootApplication • 作用:这是SpringBoot项目的"总开关",放在主类上 • 通俗理解:相当于对电脑说:"开机!我要用SpringBoot了!…...

26 Arcgis软件常用工具有哪些

一、画图改图工具(矢量编辑)‌ ‌挪位置工具(移动工具)‌ 干哈的?‌选中要素‌(比如地块、道路)直接拖到新位置,或者用坐标‌X/Y偏移‌批量移动,适合“整体搬家”。 ‌磁…...

OpenCV --- 图像预处理(七)

OpenCV — 图像预处理(七) 文章目录 OpenCV --- 图像预处理(七)十七,图像轮廓特征查找17.1 外接矩形17.2 最小外接矩形17.3 最小外接圆 十七,图像轮廓特征查找 图像轮廓特征查找其实就是他的外接轮廓。应用…...

【计算机网络】信息时代的数字神经系统

目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现案例1:Python TCP服务器案例2:网络带宽测试 运行结果验证 三、性能对比测试…...

Adriuno:编程语言基础

Adriuno主要的编程语言是C语言,使得使用者不需要掌握特殊的编程语言,变得更加容易上手。 一、函数 Arduino提供了许多函数,其功能是控制 Arduino开发板,进行数值计算等,包括数字I/O函数、模拟I/O函数、高级I/O函数、时…...

二叉搜索树的实现与应用场景

本章目标 1.二叉搜索树的概念 2.二叉搜索树的性能分析 3.二叉搜索树的实现 4.二叉搜索树的key/key-value的实现场景 1.二叉搜索树的概念 二叉搜索树又叫二叉排序树,它是具有以下性质的树 1.它的左子树不为空,并且左子树上的值都小于根节点 2.它的右子树不为空,并且右子树上的…...

单例模式介绍

单例模式大家都很清楚,最常见的是饿汉式与懒汉式。也有不常见的静态内部类式与枚举式以及,懒汉式的线程安全版本。 单例模式常被用于全局式的配置管理(数据库连接池,日志管理器),资源共享(线程池…...

Pycharm 代理配置

Pycharm 代理配置 文章目录 Pycharm 代理配置1. 设置系统代理1.1 作用范围1.2 使用场景1.3 设置步骤 2. 设置 python 运行/调试代理2.1 作用范围2.2 使用场景2.3 设置步骤 Pycharm 工具作为一款强大的 IDE,其代理配置在实际开发中也是必不可少的,下面介绍…...

springboot入门-repository数据访问层JPA和mybatis

在 Spring Boot 中,Repository 接口是数据访问层(DAO)的核心抽象,而 JpaRepository 和 MyBatis 的实现方式有显著不同。以下是详细解释: 1. JPA 的 Repository 接口为什么使用 interface? (1) 基于接口的动…...

代码随想录算法训练营Day31 | 56. 合并区间 738.单调递增的数字

56. 合并区间 问题描述: 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 解决方式&#xf…...

【教学类-102-19】蝴蝶三色图作品1——卡纸蝴蝶(滴颜料按压对称花纹)A4横版最大号22.85CM

背景需求: 前期做了18次实验,基本实现了三色图三线的各种变化效果和16种图纸大小的批量导入 今天开始制作具体可用的学具——黑卡纸蝴蝶(滴颜料按压对撑颜色) 【教学类-102-11】蝴蝶外轮廓01——Python对黑白图片进行PS填充三种颜色+图案描边+图案填充白色+制作1图2图6图…...

Claude系列模型-20250426

文章目录 Claude 3.7 Sonnet - "Our most intelligent model yet"Claude 3.5 Haiku - "Fastest model for daily tasks"Claude 3.5 Sonnet (Oct 2024)Claude 3 Opus总结Claude 3.7 Sonnet - “Our most intelligent model yet” 特点: 这是目前Claude系列…...

ADC单通道采集实验

设置的步骤如下; #include "adc.h"ADC_HandleTypeDef adc_handle {0}; void adc_init(void) {adc_handle.Instance ADC1; //ADC的基地址adc_handle.Init.DataAlign ADC_DATAALIGN_RIGHT; //…...

启动你的RocketMQ之旅(五)-Broker详细——消息传输

前言: 👏作者简介:我是笑霸final。 📝个人主页: 笑霸final的主页2 📕系列专栏:java专栏 📧如果文章知识点有错误的地方,请指正!和大家一起学习,一…...

100个节点的部署,整合Docker、Kubernetes和Jenkins的详细设计

一、架构设计概览 组件角色: Docker:应用容器化封装,确保环境一致性。Kubernetes(K8s):自动化容器编排,管理多节点集群的调度、扩缩容和自愈。Jenkins:CI/CD流水线驱动,实现代码到生产的自动化流程。集群规模: Master节点:3个(高可用,避免单点故障)。Worker节点:…...

神经网络与计算机视觉

2016 年,随着 AlphaGo 在围棋比赛中击败李世石,“人工智能”、“神经网络”、“深度 学习”等字眼便越来越多的出现在大众眼前,智能化好像成为一种不可逆转的趋势,带给大家新奇感的同时也带来了一丝忧惧:在不远的未来,机器是否真的拥有思维和情感?《终结者》中天网大战人…...

openEuler对比CentOS的核心优势分析

openEuler对比CentOS的核心优势分析 在开源操作系统领域,openEuler与CentOS均占据重要地位,但随着CentOS维护策略的调整(如CentOS 8停止维护,转向CentOS Stream),越来越多的用户开始关注国产化替代方案。o…...

高性能电脑系统优化工具Advanced SystemCare PRO v18.3.0.240 解锁永久专业版

软件介绍 IObit Advanced SystemCare,系统清理维护与安全防护软件,大幅提升整体系统性能和安全!一键AI智能模式,全面扫描优化修复系统,拥有性能加速模式、系统优化、网络加速、启动项优化、软件更新、实时监视清理、隐…...

【C语言练习】005. 编写表达式并确定其值

【C语言练习】005. 编写表达式并确定其值 005. 编写表达式并确定其值示例 1:算术表达式计算过程:最终结果:示例 2:关系和逻辑表达式计算过程:最终结果:示例 3:复合赋值和算术表达式计算过程:最终结果:示例 4:位运算表达式计算过程:最终结果:示例 5:综合表达式计算…...

力扣面试150题--合并两个有序链表和随机链表的复制

Day 33 题目描述 思路 常规题目,比较list1和list2节点的值,取出较小值扩展链表,最后其中一个遍历完直接拼接另外一个即可(归并排序) /*** Definition for singly-linked list.* public class ListNode {* int v…...

测试用例的设计

组合原则:多个选项有效数据建议组合使用(正向功能)、单个选项无效数据组合其他选项有效数据使用(逆向功能) 一、针对登录模块设计测试用例: 1.账号:已注册手机号、已注册邮箱、为空、未注册手机号、未注册邮箱 2.密码:注册密码、为空、错误密码 3.验证码:正确、过期、错误 …...

关于TCP三次握手和四次挥手的疑点

参考文章:浅谈TCP三次握手和四次挥手 1、三次握手的作用 (1)确保双方收到对方的初始序列号:客户端发送SYN包,服务器回复SYN-ACK包,客户端再回复ACK包,确保双方都接收到对方的序列号。 &#xf…...

逆向|dy|a_bogus|1.0.1.19-fix.01

2025-04-26 请求地址:aHR0cHM6Ly93d3cuZG91eWluLmNvbS91c2VyL01TNHdMakFCQUFBQV96azV6NkoyMG1YeGt0eHBnNkkzRVRKejlyMEs3d2Y2dU9EWlhvd2ttblZWRnB0dlBPMmMwN2J0WFotcVU4V3M 个人主页的视频数据 我们需要逆向这个接口,所以现在需要分析这个请求, 分析这几个数据包可以发现: 只有…...

【软考-架构】13.5、中间件

✨资料&文章更新✨ GitHub地址:https://github.com/tyronczt/system_architect 文章目录 中间件技术典型应用架构 中间件技术 在分布式系统环境中,出于操作系统和应用程序之间的软件。 主要的中间件有五类: 数据库访问中间件&#xff1…...

【Redis】基础2:作为缓存

文章目录 1. 一些概念2. 主动更新策略/缓存设计模式2.1 cache-aside pattern(lazy loading)2.2 read-through pattern(针对读操作)2.3 write-through pattern2.4 write behind pattern(write back pattern)…...

豆包,Kim,deepseek对比

以下是豆包、Kimi、DeepSeek的对比与应用: 对比 - 核心技术:DeepSeek-R1完全依赖强化学习驱动,跳过监督微调阶段。Kimi k1.5采用“轻量级SFT预热RL优化”的混合策略。 - 多模态支持:Kimi k1.5支持文本与图像的多模态联合推理。De…...

L2-005 集合相似度

L2-005 集合相似度 - 团体程序设计天梯赛-练习集 给定两个整数集合,它们的相似度定义为:Nc​/Nt​100%。其中Nc​是两个集合都有的不相等整数的个数,Nt​是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。 …...

33.状态压缩动态规划

一、算法内容 1.简介 若元素数量比较小(不超过 20 20 20)时,想要存储每个元素取或不取的状态时, 可以借助位运算将状态压缩。 需要借助状态压缩过程的动态规划就是状态压缩 DP(很多地方会简称为状压 DP)…...

WSL 中 nvidia-smi: command not found的解决办法

前言 在使用基于 Linux 的 Windows 子系统(WSL)时,当我们执行某些操作后,可能会遇到输入 nvidia-smi 命令却无法被系统识别的情况。 例如,在终端中输入nvidia-smi 后,系统返回提示 -bash: nvidia-smi: co…...

Linux 进程控制

文章目录 1. 进程创建1.1 fork1.2 写时拷贝 2.进程终止2.1 退出码2.2 进程如何返回退出码 3. 进程等待3.1 wait3.1.1 阻塞等待3.1.2 退出码与退出信号 3.2 waitpid 1. 进程创建 1.1 fork 我们可以使用fork函数来创建子进程,创建子进程后,父子进程之间就…...

使用MobaXterm远程登录Ubuntu系统:SSH服务配置教程

一、MobaXterm介绍 MobaXterm官网:https://mobaxterm.mobatek.net/ MobaXterm类似于Xshell,是一个工具箱,功能比Xshell多。 直接去官网下载安装就可以,本文主要介绍开启Ubuntu的ssh服务,并通过MobaXterm实现远程登录…...

直线模组精度测试的标准是什么?

直线模组的精度测试是确保其性能和稳定性的重要环节。那么,大家知道直线模组精度测试的标准是什么吗? 1、定位精度:以最大行程为基准长度,用从基准位置开始实际移动的距离与指令值之间的最大误差的绝对值来表示。一般来说&#xf…...

RK3568 Debian调试记录

文章目录 1、环境介绍2、前言3、debian目录结构3.1、脚本调用顺序 4、编译debian4.1、构建debian编译所需的环境4.2、编译debian4.3、打包 5、系统启动6、debian适配6.1、新增板级配置单6.2、USB6.3、Wi-Fi / BT6.4、屏幕旋转6.5、触摸旋转6.6、时钟 7、测试8、总结 1、环境介绍…...

来自 Bisheng 关于微调的内容总结

来自 Bisheng 关于微调的内容总结 0. 引言1. 关于微调的总结 0. 引言 这篇文章的内容(主要是截图)是来自 Bisheng 关于微调的内容总结,内容来源于 B 站Up主七吟覃_BISHENG负责人的视频,感兴趣的可以观看原视频。 1. 关于微调的总…...

Git 工具的安装

目录 Git 工具介绍 Git 工具安装 创建本地仓库 配置本地仓库 Git 版本控制基本原理 本期开始,我们将学习如何使用 Git 工具,实现多版本控制。 Git 工具介绍 要了解 Git 工具我们得先了解版本控制器的概念。 有这样一个场景,如下图所…...

任务管理系统,Java+Vue,含源码与文档,科学规划任务节点,全程督办保障项目落地提效

前言: 在当今快节奏的工作环境中,高效的任务管理是确保项目按时完成、资源合理分配及团队协作顺畅的关键。任务管理系统作为提升工作效率的重要工具,通过数字化手段帮助用户组织、跟踪和完成各类任务。本文将详细阐述任务管理系统的五大核心…...

JavaScript基础知识合集笔记1——数据类型

文章目录 JavaScript中的数据类型基本数据类型引用类型存储区别 JavaScript中的数据类型 基本数据类型和复杂类型 基本数据类型 基础类型包含六种:Number、Bigint、String、Boolean、Undefined、null、symbol Number(特殊值NaN,意为“不是数值”) c…...

2025.04.26-美团春招笔试题-第四题

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 04. 图像智能降维处理 问题描述 卢小姐是一家图像处理公司的算法工程师,她正在开发一种高效的图像压缩算法。该算法基于奇异值分解(SVD)技术,通过保留图像矩阵中最重要的特征,在…...

测试基础笔记第十三天

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、流程控制语句-判断语句1.判断语句2.逻辑运算符3.elif多重判断4.if的嵌套5.if与逻辑运算符结合1.and2.or3.not 设计测试用例二、流程控制语句-循环语句1.while语…...

【昇腾】PaddleOCR转om推理

文章目录 1. 使用Paddle框架推理1.1 安装1.2 推理 2. paddle 转 ONNX3. 转om4. Ais_bench 命令推理5. Ais_bench 编写推理代码 概要: PyTorch官方提供了昇腾插件包,安装后虽然可以支持PytorchOCR和PaddlePaddle的推理任务,但性能通常低于GPU。…...

【数据融合】基于拓展卡尔曼滤波实现雷达与红外的异步融合附matlab代码

一、问题分析与技术难点 1. 传感器特性对比 传感器测量维度优势局限性噪声模型雷达距离 $ r $、方位角 $ \theta $、速度 $ v $测距精度高、全天候工作角度分辨率低、易受多径干扰高斯噪声,协方差矩阵 $ R_r \text{diag}(\sigma_r^2, \sigma_\theta^2, \sigma_v^…...

第一部分:网页的骨架 —— HTML

这目录 前言1. 初识 HTML:搭建地基和框架1.1 小例子: 创建一个最简单的 HTML 页面,包含 "Hello World"。1.2 练习 2. 常用文本与内容标签:填充墙体和房间2.1 小例子: 创建一个包含个人简介(使用标…...

RTMP 协议解析 1

介绍 📖 什么是 RTMP? RTMP协议(Real-Time Messaging Protocol,实时消息传输协议)是由Adobe公司(最初由Macromedia开发)设计的一种用于实时传输音频、视频和数据流的网络协议,主要…...

c++初始化数组

1.前言 话说数组是n年前的事了,我为啥现在又提到它呢?因为很多人不会初始化数组,所以今天我来教教大家 2.初始化数组 初始化数组就是定义数组,就像这样 int a[5]{0}; 这样是a[0]到a[5]全都等于0 如果要输出这个数组&#xf…...

支持Win和Mac的批量图片压缩方法

软件介绍 如果你的图片太大,传输或上传总是卡壳,那就需要一款好用的图片压缩工具了。今天推荐的这款工具支持Windows和Mac双系统,简直是图片压缩界的"变形金刚"! 图压(图片压缩双系统版) …...

autodl(linux)环境下载git-lfs等工具及使用

一、git-lfs工具下载 #初始化git.lfs命令 curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash sudo apt-get install git-lfs git lfs install 二、 huggingface-cli工具下载及使用 Linux设置huggingface的镜像: ex…...

云原生--核心组件-容器篇-3-Docker核心之-镜像

1、定义与作用 定义: Docker镜像是一个只读的模板,包含运行应用程序所需的所有内容,包括代码、依赖库、环境变量、配置文件等。简单来说,Docker镜像是一个轻量级、独立、可执行的软件包,它包含了运行某个软件所需的所有…...

Dify与n8n深度对比:AI应用开发与自动化工作流的双轨选择

Dify与n8n深度对比:AI应用开发与自动化工作流的双轨选择 在数字化转型加速的2025年,Dify和n8n作为两大主流工具,分别代表了AI应用开发与自动化工作流领域的顶尖解决方案。本文将从核心定位、功能特性、使用场景等维度展开对比,为…...

AI算法优化建筑形态与能耗管理 实现方案和技术架构

以下是基于AI算法优化建筑形态与能耗管理的实现方案与技术架构,结合行业实践与前沿技术趋势,分层次解析核心要素及实施路径: 一、技术架构设计 1. 数据采集与感知层 多源数据融合 传感器网络:部署温湿度、CO₂浓度、光照、人流密度等传感器,构建实时数据采集体系(如北京…...

【互联网架构解析】从物理层到应用层的全栈组成

目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现(Python网络请求)运行结果验证 三、性能对比测试方法论量化数据对比结果分…...