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

SpringBoot项目中常用的一些注解

一、核心注解

  1. @SpringBootApplication

    • 作用:标注一个主程序类,表明这是一个Spring Boot应用程序的入口。
    • 说明:这是一个复合注解,组合了@Configuration、@EnableAutoConfiguration和@ComponentScan。
  2. @EnableAutoConfiguration

    • 作用:Spring Boot会根据添加的jar依赖自动配置项目。
    • 用法:只需在启动类或配置类上添加该注解即可(注意:@SpringBootApplication注解已经组合了这个注解,所以在启动类上可以不使用)。
  3. @ComponentScan

    • 作用:自动扫描并加载符合条件的组件或者Bean,定义扫描的路径。
    • 用法:通常与@SpringBootApplication一起使用,无需单独添加。
    • 说明:主要是用来扫描Bean,如果启动未加载到Bean,可以通过这个注解指定Bean扫描加载路径(注意:这个注解也已经整合在@SpringBootApplication注解中,所以可以不用在主类中添加这个注解)。
  4. @Configuration

    • 作用:标识一个类作为配置类,类似于Spring XML配置文件。
    • 用法:直接在类上添加这个注解,一般都是配合@Bean注解使用。
    • 说明:表明这个类是一个Java配置类。

二、Web注解

  1. @Controller

    • 作用:表示这个类是一个控制器,用于接收来自客户端的请求并处理它们。
  2. @RestController

    • 作用:结合了@Controller和@ResponseBody两个注解的功能,用于标记一个类或者方法,表示该类或方法用于处理HTTP请求,并将响应的结果直接返回给客户端,而不需要进行视图渲染。
    • 用法:一般直接放在控制器类上,也就是控制层,配合@RequestMapping使用。

三、依赖注入注解

  1. @Autowired

    • 作用:用于自动装配Bean,即将需要的Bean对象注入到目标Bean中,省去了手动配置的步骤。
    • 用法:可以用于字段、构造方法、Setter方法上,实现不同的自动装配方式。
    • 说明:可以减少编码工作量,提高代码的可维护性和灵活性,使得Bean之间的依赖关系更加清晰。

四、数据访问注解

  1. @Repository

    • 作用:将一个类标识为数据访问层(DAO)的组件,用于对数据库进行CRUD操作,封装数据访问逻辑。
    • 说明:被标识为@Repository的类通常包含与数据库交互的方法,如数据的增删改查等。

五、事务注解

  1. @Transactional

    • 作用:用来声明一个方法或类中所有公共方法的事务边界。
    • 说明:使用@Transactional可以极大简化事务管理的复杂性,确保数据的一致性和完整性。

六、日志注解

  1. @Slf4j

    • 作用:在SpringBoot项目中,@Slf4j是Lombok提供的一个日志注解,用于简化日志声明。
    • 用法:引入Lombok依赖后,在类上添加@Slf4j,即可自动创建一个Logger实例,无需手动创建LoggerFactory.getLogger()。

七、AOP相关注解

  1. @Aspect

    • 作用:把当前类标识为一个切面供容器读取。
  2. @Pointcut

    • 作用:定义切入点,即带有通知的连接点,在程序中主要体现为书写切入点表达式。
  3. @Before

    • 作用:标识一个前置增强方法,相当于BeforeAdvice的功能。
  4. @AfterReturning

    • 作用:后置增强,相当于AfterReturningAdvice,方法退出时执行。
  5. @AfterThrowing

    • 作用:异常抛出增强,相当于ThrowsAdvice。
  6. @After

    • 作用:final增强,不管是抛出异常或者正常退出都会执行。
  7. @Around

    • 作用:环绕增强,相当于MethodInterceptor。

八、其他注解 

1、@Component、@Service、@Repository

  • 作用:都是用于将类注入到Spring容器中的注解,但它们使用的场景不同。

  • 功能

    • @Component:是一个通用的注解,用于指定一个类是一个Spring Bean。

    • @Service:用于标识一个类是业务逻辑层的Bean。

    • @Repository:用于标识一个类是数据访问层的Bean。

2、@ResponseBody

  • 作用:用于方法或类上,表示该方法的返回结果直接写入HTTP response body中,而不会被解析为跳转路径。

3、 处理请求参数的注解

  • @RequestParam:用于接收URL?后面的参数,适用于GET或POST请求。

  • @PathVariable:用于获取路径参数,如URL中的/{id}/{name}这种形式的参数。

  • @RequestBody:用于获取请求体数据(body),通常用于POST请求,接收json数据。

  • @RequestHeader:用于获取请求标头的信息。

  • @CookieValue:用于获取Cookie的值。

4、@Value、@ConfigurationProperties、@PropertySource

  • @Value:用于获取配置文件中的单个属性值。

  • @ConfigurationProperties:可以直接注入整个类的数据。

  • @PropertySource:用于指定加载的配置文件,但注意它不支持YML文件读取。

5、@build

  • 作用:@build注解通常与Lombok插件一起使用,用于自动生成所需要的代码。通过@build注解,可以使得编写的类能够通过代码实例化,自动生成setter、getter、toString等方法。但需要注意的是,直接使用@build注解进行对象创建并不是一种推荐的做法,更好的方式是使用Lombok提供的builder模式来创建对象。

  • 功能:简化代码,减少手动编写setter、getter、toString等方法的重复劳动,提高开发效率。

6、@Select

  • 作用:@Select注解是MyBatis框架中的一个注解,用于标记查询语句。它可以在接口方法上使用,也可以在XML文件中使用。

  • 功能:通过@Select注解,可以直接在接口方法上指定SQL查询语句,无需编写XML配置文件。这使得查询语句更加直观和易于管理。同时,@Select注解还支持参数替换和动态SQL等功能。

7、@Target

  • 作用:@Target注解是Java中的一个元注解(即注解的注解),用于指定其他注解可以应用的目标元素(如类、方法、字段等)。

  • 功能:通过@Target注解,可以限制其他注解的使用范围,确保它们只能被应用到指定的元素上。这有助于提高代码的可读性和可维护性,避免注解被误用或滥用。

8、@Retention

  • 作用:@Retention注解也是Java中的一个元注解,用于指定注解的生命周期。

  • 功能:通过@Retention注解,可以定义注解在何时被保留和丢弃。Java提供了三种RetentionPolicy(保留策略):SOURCE、CLASS和RUNTIME。

    • SOURCE:注解只在源代码中保留,在编译成.class文件时被丢弃。这种策略通常用于检查性的注解,如@Override和@SuppressWarnings。

    • CLASS:注解在编译成.class文件时被保留,但在JVM加载类文件时被丢弃。这是默认的保留策略,通常用于在编译时进行一些预处理操作,如生成辅助代码。

    • RUNTIME:注解不仅被保留在.class文件中,而且在JVM加载类文件后仍然可用。这种策略通常用于在运行时通过反射机制获取注解信息,进行相应处理。

相关文章:

SpringBoot项目中常用的一些注解

一、核心注解 SpringBootApplication 作用:标注一个主程序类,表明这是一个Spring Boot应用程序的入口。说明:这是一个复合注解,组合了Configuration、EnableAutoConfiguration和ComponentScan。 EnableAutoConfiguration 作用&…...

【网络】自定义协议——序列化和反序列化

> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解什么是序列化和分序列,并且自己能手撕网络版的计算器。 > 毒鸡汤:有些事情,总是不明白,所以我不…...

Pytorch如何精准记录函数运行时间

0. 引言 参考Pytorch官方文档对CUDA的描述,GPU的运算是异步执行的。一般来说,异步计算的效果对于调用者来说是不可见的,因为 每个设备按照排队的顺序执行操作Pytorch对于CPU和GPU的同步,GPU间的同步是自动执行的,不需…...

使用 Java 实现邮件发送功能

引言 1. JavaMail API 简介 2. 环境准备 2.1 Maven 依赖 2.2 Gradle 依赖 3. 发送简单文本邮件 4. 发送 HTML 邮件 5. 发送带附件的邮件 6. 注意事项 引言 在现代应用开发中,邮件发送功能是非常常见的需求,例如用户注册验证、密码重置、订单确认…...

html第一个网页

创建你的第一个HTML网页是一个激动人心的步骤。以下是创建一个简单网页的基本步骤和代码示例&#xff1a; 基础结构&#xff1a;所有的HTML文档都应该包含以下基本结构。 <!DOCTYPE html> <html> <head><title>我的第一个网页</title> </he…...

前后端交互接口(三)

前后端交互接口&#xff08;三&#xff09; 前言 前两集我们先做了前后端交互接口的约定以及浅浅的阅读了一些proto代码。那么这一集我们就来看看一些重要的proto代码&#xff0c;之后把protobuffer给引入我们的项目当中&#xff01; gateway.proto 我们来看一眼我们的网关…...

华为Mate70前瞻,鸿蒙NEXT正式版蓄势待发,国产系统迎来关键一战

Mate 70系列要来了 上个月&#xff0c;vivo、小米、OPPO、荣耀等众多智能手机制造商纷纷发布了他们的年度旗舰产品&#xff0c;手机行业内竞争异常激烈。 同时&#xff0c;华为首席执行官余承东在其个人微博上透露&#xff0c;Mate 70系列将标志着华为Mate系列手机达到前所未有…...

【安卓13 源码】Input子系统(4)- InputReader 数据处理

1. 多指触控协议 多指触控协议有 2 种&#xff1a; > A类&#xff1a; 处理无关联的接触&#xff1a; 用于直接发送原始数据&#xff1b; > B类&#xff1a; 处理跟踪识别类的接触&#xff1a; 通过事件slot发送相关联的独立接触更新。 B协议可以使用一个ID来标识触点&…...

Xserver v1.4.2发布,支持自动重载 nginx 配置

Xserver——优雅、强大的 php 集成开发环境 本次更新为大家带来了更好的用户体验。 &#x1f389; 下载依赖组件时&#xff0c;显示进度条&#xff0c;展示下载进度。 &#x1f389; 保存站点信息和手动修改 vhost 配置文件之后&#xff0c;自动重载 nginx 配置 &#x1f41e…...

Java反射原理及其性能优化

目录 JVM是如何实现反射的反射的性能开销体现在哪里如何优化反射性能开销 1. JVM是如何实现反射的? 反射是Java语言中的一种强大功能&#xff0c;它允许程序在运行时动态地获取类的信息以及操作对象。下面是一个简单的示例&#xff0c;演示了如何使用反射调用方法&#xff…...

RabbitMQ 管理平台(控制中心)的介绍

文章目录 一、RabbitMQ 管理平台整体介绍二、Overview 总览三、Connections 连接四、Channels 通道五、Exchanges 交换机六、Queues 队列查看队列详细信息查看队列的消息内容 七、Admin 用户给用户分配虚拟主机 一、RabbitMQ 管理平台整体介绍 RabbitMQ 管理平台内有六个模块&…...

【SQL】在 SQL Server 中创建数据源是 MySQL 数据表的视图

背景&#xff1a;Windows系统已安装了mysql5.7和sqlServer数据库&#xff0c;现在需要在sqlServer创建视图或者查询来自mysql的数据&#xff0c;视图的数据来源mysql数据库。下面进行实现在sqlserver实现获取mysql数据表数据构建视图。 1、打开 ODBC 数据源管理器&#xff0c;…...

现代Web开发:Next.js 深度解析与最佳实践

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 现代Web开发&#xff1a;Next.js 深度解析与最佳实践 现代Web开发&#xff1a;Next.js 深度解析与最佳实践 现代Web开发&#xf…...

LeetCode题练习与总结:赎金信--383

一、题目描述 给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以&#xff0c;返回 true &#xff1b;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1&#xff1…...

eval: jdk1.8.0_431/jre/bin/java: Permission denied

当您在启动Tomcat或其他Java应用时遇到“Permission denied”错误&#xff0c;这通常表示当前用户没有执行指定Java可执行文件的权限。以下是解决这个问题的几种方法&#xff1a; 方法一&#xff1a;检查文件权限 查看文件权限&#xff1a; 使用ls -l命令查看Java可执行文件的…...

.Net IOC理解及代码实现

IOC理解 IoC(Inversion of Control)&#xff1a;即控制反转&#xff0c;这是一种设计思想&#xff0c;指将对象的控制权交给IOC容器&#xff0c;由容器来实现对象的创建、管理&#xff0c;程序员只需要从容器获取想要的对象就可以了。DI(Dependency Injection)&#xff0c;即依…...

履带机器人(一、STM32控制部分--标准库)

一、履带机器人整体逻辑框架 通过在PC端搭建上位机,使得在PC端可以给STM32发送控制指令并且接受STM32的状态信息。 通过RS485通信,使得STM32可以和电机进行通信,STM32发送启动、停止、转速、方向等指令,并接受电机返回的状态信息。 二、STM32逻辑框架 整体逻辑: 1、先…...

地理空间-Java实现航迹稀释

Java实现航迹点稀释算法&#xff08;Douglas - Peucker算法&#xff09;的示例代码&#xff0c;该算法可在保证航迹整体形状变化不大的情况下减少航迹点数量&#xff1a; import java.util.ArrayList; import java.util.List; class Point { double x; double y; public Point…...

qt QHttpMultiPart详解

1. 概述 QHttpMultiPart是Qt框架中用于处理HTTP多部分请求的类。它类似于RFC 2046中描述的MIME multipart消息&#xff0c;允许在单个HTTP请求中包含多个数据部分&#xff0c;如文件、文本等。这种多部分请求在上传文件或发送带有附件的邮件等场景中非常有用。QHttpMultiPart类…...

【测试】【Debug】vscode中同一个测试用例出现重复

这种是正常的情况 当下面又出现一个 类似python_test->文件夹名->test_good ->test_pad 同一个测试用例出现两次&#xff0c;名称都相同&#xff0c;显然是重复了。那么如何解决&#xff1f; 这种情况是因为在终端利用“pip install pytest”安装 之后&#xff0c;又…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

comfyui 工作流中 图生视频 如何增加视频的长度到5秒

comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗&#xff1f; 在ComfyUI中实现图生视频并延长到5秒&#xff0c;需要结合多个扩展和技巧。以下是完整解决方案&#xff1a; 核心工作流配置&#xff08;24fps下5秒120帧&#xff09; #mermaid-svg-yP…...