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

springboot后端开发-常见注解及其用途

文章目录

      • 1. 组件注解
      • 2. 依赖注入注解
      • 3. 配置类注解
      • 4. 测试注解
      • 5. 控制器注解
      • 6. 安全和认证注解
      • 7. 切面相关注解
      • 8. API文档相关注解(需引入swagger)
      • 9. 其他注解

在Spring Boot框架中,有许多常用的注解用来简化开发过程中的依赖注入、组件扫描、配置、安全控制等方面的工作。这些注解可以大致分为几类:

1. 组件注解

这些注解主要用于标记类或接口,表明它们是Spring容器中的组件,并可以进行自动装配。

  • @Component通用组件注解,可以用于任何非特殊类型的Java类。
  • @Repository:用于数据访问层(DAO层)的组件。
  • @Service:用于业务逻辑层的组件。
  • @Controller:用于Web层的控制器组件。
  • @RestController:结合了@Controller和@ResponseBody的功能,用于直接返回JSON数据的控制器。
  • @ControllerAdvice:控制器切面标注。

2. 依赖注入注解

这些注解主要用于在类内部声明依赖关系,并由Spring框架负责实例化和注入。

  • @Autowired:自动装配bean,可以用于字段、构造函数、setter方法或任意方法。
  • @Qualifier:与@Autowired一起使用,用于消除模糊性,指定具体要注入的bean名称。
  • @Resource:基于JNDI的查找服务,可以通过name或lookup-name来装配bean,也可以通过shared属性控制是否共享。
  • @Inject:JSR-330标准注解,用于依赖注入。
  • @Bean:用于在配置类中创建Spring容器管理的bean。

3. 配置类注解

这些注解用于声明配置类或开启某些特定功能的支持。

  • @Configuration:声明一个配置类,可以包含@Bean方法。
  • @EnableAutoConfiguration:开启自动配置,是Spring Boot自动配置的核心注解。
  • @Import:导入一个或多个配置类。
  • @PropertySource:从指定资源加载属性值。

4. 测试注解

这些注解主要用于简化Spring Boot应用的单元测试或集成测试。

  • @RunWith(SpringRunner.class):与JUnit结合使用,用于启动Spring容器。
  • @SpringBootTest:用于创建整个Spring应用上下文,适用于集成测试。
  • @WebMvcTest:用于测试Web层,只会加载Spring MVC相关组件。
  • @DataJpaTest:用于测试JPA相关代码。

5. 控制器注解

这些注解主要用于Web层的请求处理。

  • @RequestMapping:标记类或方法,处理特定的HTTP请求。
  • @GetMapping:处理HTTP GET请求。
  • @PostMapping:处理HTTP POST请求。
  • @PutMapping:处理HTTP PUT请求。
  • @DeleteMapping:处理HTTP DELETE请求。
  • @PatchMapping:处理HTTP PATCH请求。
  • @ResponseBody:用于将方法的返回值直接写入HTTP响应体中。
  • @RequestBody:用于将HTTP请求体中的内容绑定到方法参数上。
  • @Validated:用于请求的数据对象的校验。
  • @PathVariable:用于请求URI上的参数绑定。

6. 安全和认证注解

这些注解用于处理安全性和用户认证。

  • @Secured:用于限制只有拥有特定权限的用户才能访问的方法或类。
  • @PreAuthorize@PostAuthorize:基于SpEL表达式来授权。

7. 切面相关注解

  • @EnableAspectJAutoProxy:启用AspectJ自动代理功能。通常放在主配置类或启动类上。
  • @Aspect:标记一个类为切面类,其中可以包含多个通知(Advice)。
  • @Pointcut:定义一个切入点表达式,用于匹配目标对象中的连接点(Joinpoint)。
  • @Before:声明前置通知。
  • @After:声明后置通知。
  • @AfterReturning:声明返回后通知。
  • @AfterThrowing:声明异常后通知。
  • @Around:声明环绕通知。

8. API文档相关注解(需引入swagger)

  • @ApiModel:声明实体对象类。
  • @ApiModelProperty:声明对象属性。
  • @Api:声明一个接口类。
  • @ApiOperation:声明一个具体接口。
  • @ApiParam:声明接口参数属性。

9. 其他注解

还有一些注解用于特定的功能或场景:

  • @Profile:用于指定配置文件,可以激活特定环境下的配置。
  • @Cacheable@CachePut@CacheEvict:用于与Spring Cache集成,实现缓存功能。
  • @Async:用于声明异步方法。
  • @Scheduled:用于定时任务。
  • @ExceptionHandler:声明一个全局异常处理方法(方法需声明在带有@ControllerAdvice注解的类当中)。
  • @ResponseStatus:声明异常返回http编码(方法需声明在带有@ControllerAdvice注解的类当中)。

以上列举的只是部分常用注解,实际上Spring Boot框架中有更多的注解可供使用。这些注解共同作用于Spring Boot应用中,使得开发变得更加高效和便捷。后续还会继续补充…

相关文章:

springboot后端开发-常见注解及其用途

文章目录 1. 组件注解2. 依赖注入注解3. 配置类注解4. 测试注解5. 控制器注解6. 安全和认证注解7. 切面相关注解8. API文档相关注解(需引入swagger)9. 其他注解 在Spring Boot框架中,有许多常用的注解用来简化开发过程中的依赖注入、组件扫描、配置、安全控制等方面…...

TypeScript 扩展

扩展 ?:可选参数 可选链事实上并不是TypeScript独有的特性,它是ES11(ES2020)中增加的特性 可选链使用可选链操作符 ? 作用是当对象的属性不存在时,会短路,直接返回undefined,如果存在,那么…...

按键学院往期视频

按键学院第五期 网游实战系列课程 按键学院第四期 网游实战系列课程01-回合制网游的特点:测试游戏后台按键图色 网游实战系列课程02-神武新手任务的识别与处理:字库识别任务 网游实战系列课程03-神武自动组队与攻击 网游实战系列课程04-神武自动逛地图与攻击 网游实战系列课程0…...

通信工程学习:什么是MRF多媒体资源功能、MRFC多媒体资源功能控制、MRFP多媒体资源功能处理

一、MRF多媒体资源功能 MRF(Multimedia Resource Function,多媒体资源功能)是3G/IMS网络中定义的提供多媒体资源功能的网络实体,它为3G/IMS网络的业务和承载提供媒体能力支持。MRF通过提供丰富的媒体处理功能,如播放声…...

【Windows】获取进程缓解策略设置情况

目录 一、前言 二、主要概念 三、实现步骤 四、总结 原文出处链接:[https://blog.csdn.net/qq_59075481/article/details/142234952] 一、前言 在现代操作系统中,进程缓解策略(Process Mitigation Policy)提供了一种防御机制…...

语音识别相关概念

声音如何保存成数字信号? 声音是听觉对声波产生的感知,而声波是一种在时间和振幅上连续的模拟量,本质是介质的振动,,比如空气的振动。那么只需要把这个振动信号记录下来,并用一串数字来表达振动信号振动的…...

Iceberg与SparkSQL查询操作整合

前言 spark操作iceberg之前先要配置spark catalogs,详情参考Iceberg与Spark整合环境配置。 Iceberg使用Apache Spark的DataSourceV2 API来实现数据源和catalog。 使用SQL查询 查询的时候表要按照:catalog.数据库.表名的格式 SELECT * FROM prod.db.table; -- catalog: p…...

Linux 上安装 PostgreSQL

Linux 上安装 PostgreSQL PostgreSQL 是一款功能强大的开源关系数据库管理系统,因其稳定性、可扩展性和先进的功能而广受欢迎。在 Linux 系统上安装 PostgreSQL 是一个相对直接的过程,但具体步骤可能会因您使用的 Linux 发行版而异。本文将介绍在几种流行的 Linux 发行版上安…...

WRF-LES与PALM微尺度气象大涡模拟、PALM静态数据预备、PALM驱动数据预报、PALM模拟

查看原文>>>WRF-LES与PALM微尺度气象大涡模拟及ChatGPT在大气科学领域应用 针对微尺度气象的复杂性,大涡模拟(LES)提供了一种无可比拟的解决方案。微尺度气象学涉及对小范围内的大气过程进行精确模拟,这些过程往往与天气…...

需求分析概述

为什么要进行需求分析呢? 笑话:富翁娶妻 某富翁想要娶老婆,有三个人选,富翁给了三个女孩各一千元,请 她们把房间装满。第一个女孩买了很多棉花,装满房间的1/2。第 二个女孩买了很多气球,装满…...

Java | Leetcode Java题解之第391题完美矩形

题目&#xff1a; 题解&#xff1a; class Solution {public boolean isRectangleCover(int[][] rectangles) {long area 0;int minX rectangles[0][0], minY rectangles[0][1], maxX rectangles[0][2], maxY rectangles[0][3];Map<Point, Integer> cnt new HashM…...

java项目之基于web的人力资源管理系统的设计与实现(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的基于web的人力资源管理系统的设计与实现。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; …...

Linux 防火墙:iptables (二)

文章目录 SNAT 原理与应用SNAT 应用环境SNAT 原理SNAT 转换前提条件SNAT 格式SNAT 转换规则配置 DNAT 原理与应用DNAT 应用环境DNAT 原理DNAT 转换前提条件DNAT 格式DNAT 转换规则配置 iptables 规则的备份和还原导出&#xff08;备份&#xff09;所有表的规则导入&#xff08;…...

小目标检测顶会新思路!最新成果刷爆遥感SOTA,参数小了18倍

遥感领域的小目标检测一直是个具有挑战性和趣味性的研究方向&#xff0c;同时也是顶会顶刊的常客。但不得不说&#xff0c;今年关于遥感小目标检测的研究热情尤其高涨&#xff0c;已经出现了很多非常优秀的成果。 比如SuperYOLO方法&#xff0c;通过融合多模态数据并执行高分辨…...

【Ubuntu】虚拟机安装USB摄像头ROS驱动 usb_cam(最新方法)

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…...

免费的成绩查询微信小程序,让家长轻松掌握学生表现

传统的教学方式在不断地被革新。在成绩查询这一环节&#xff0c;老师们曾经面临着繁琐的手工操作和信息安全的风险。可现如今有一个让成绩查询变得轻松、高效且安全的新工具——易查分。 过去需要花费大量时间来整理成绩&#xff0c;然后通过短信或者打电话的方式告知给家长。以…...

[含视频和源码]CRUD的最佳实践,联动前后端,包含微信小程序,API,HTML等(三)

关说不练假把式&#xff0c;在上一&#xff0c;二篇中介绍了我心目中的CRUD的样子 基于之前的理念&#xff0c;我开发了一个命名为PasteTemplate的项目&#xff0c;这个项目呢后续会转化成项目模板&#xff0c;转化成项目模板后&#xff0c;后续需要开发新的项目就可以基于这…...

如何把我另一个分支上的commit拿过来

在开源过程中&#xff0c;每一次PR都是要经过严格的review的&#xff0c;这期间可能会进行多次修改&#xff0c;补充提交&#xff0c;而且这一般来说不是一个很迅速的过程&#xff0c;此时我们可能会先往后进行开发。我一般会把项目分模块逐步建立分支&#xff0c;当前一个pr合…...

【rpg像素角色】俯视角-行走动画

制作像素角色的俯视角行走动画并不像看上去那么复杂&#xff0c;尤其是在你已经完成了角色的4个方向站立姿势之后&#xff08;其中左右方向可以通过水平翻转实现&#xff09;。接下来&#xff0c;我会一步步为你讲解如何制作行走动画。 1. 理解行走规律 在制作行走动画之前&am…...

Python时间序列分析新技能,轻松掌握时间索引

大家好&#xff0c;在数据分析领域&#xff0c;时间序列数据分析是一项非常重要的技能。Pandas作为Python中强大的数据处理库&#xff0c;在处理时间序列数据时提供了丰富的功能&#xff0c;其中时间索引的应用是时间序列分析中的关键。本文将介绍如何在Pandas中使用时间索引进…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...