Spring Boot常用注解

devtools/2024/10/24 12:29:27/

一,核心注解

1, @SpringBootApplication

用途:标注一个主程序类,表明是一个SpringBoot应用程序的入口。

功能:这是一个复合注解,组合了@ComponentScan,@EnableAutoConfiguration,@SpringBootConfiguration 3个注解

  • @SpringBootConfiguration注解又是@Configuration注解的别名,用于标识一个类为配置类,类似于Spring XML配置文件。
  • @EnableAutoConfiguration 启用Spring Boot的自动配置机制,根据项目中的依赖和应用上下文自动配置Spring应用程序。
  • @ComponentScan 自动扫描指定包及其子包中的Spring组件。

二,自动配置注解

2,@EntableAutoConfiguration

用途:启用Spring的自动配置机制,根据项目中的依赖和应用上下文自动配置Spring应用程序。它会尝试根据pom文件中添加的依赖和项目中的配置自动配置Spring bean。比如redis,mysql, mq之类的依赖。

3,@Configuration

用途:标注一个类是配置类,相当于一个Spring XML配置文件。配置类可以包含一个或者多个Bean注解的方法。这些方法会将bean注入到Spring容器中。

三,组件扫描和注入注解

4,@ComponentScan

用途:指定要扫描的包,以便发现和初始化项目里所有的Spring组件。默认情况下,@ComponentScan注解会扫描主应用类所在的包及其子包。

5,@Component

用途:用于标识一个类为Spring组件(也就是bean),可以被注入到Spring容器。@Component注解是一个通用的注解,可以用来标注任何Spring管理的bean,像@Service,@Controller,@Repository都是@Component注解的别名。

6,@Service

用途:表示服务层组件,是@Component注解的别称,用于标识业务逻辑层服务。

7,@Repository

用途:用于标识持久层组件,是@Component注解的别称,用于标识数据访问组件。

8,@Controller

用途:用于标识控制层组件,是@Component注解的别称,用于标识Spring MVC控制器,处理Web请求并返回视图。

需要和@RestController区别起来,在Spring中如果是@Controller注解标识,返回的是一个web路径,需要指向对应view(即jsp或者html)的路径。但是如果是@RestController,返回是一个数据,字符串或者xml格式。

9,@RestController

用途:用于标识Spring MVC中的一个控制器组件,是@Controller注解和@ResponseBody注解的组合。返回的对象会自动序列化为Json或XML,并写入http响应体中。

四,数据绑定和验证注解

10,@RequestMapping

用途:用于映射HTTP请求到处理方法上(GET,POST,PUT,DELETE,PATCH等)。可以用在类上,也可以用在方法上。

11,@GetMapping

用途:映射HTTP GET方法到处理方法上,是@RequestMapping注解用于GET方法的特例。

12,@PostMapping

用途:映射HTTP POST方法到处理方法上,是@RequestMapping注解用于POST方法的特例。

13,@ResponseBody

用途:将方法的返回值转换为指定格式(如JSON,XML等)作为HTTP响应的内容返回给客户端。在方法上使用后,方法返回的对象就不是View对象,而是直接写入HTTP响应体中的数据。

14,@RequestBody

用途:将HTTP请求体中的内容(如JSON,XML)映射到一个Java对象。用于将POST请求体中从客户端发送的数据绑定到方法的参数上。

15,@PathVariable

用途:从请求路径中获取参数值,从而允许使用动态请求路径。

16,@RequestParam

用途:从请求中获取参数,参数来自请求路径后?开始的部分 (&来分割的key=value)

五,其他常用注解

17,@Value

用途:将配置在项目配置文件中或者配置中心的值注入到Spring bean中。

18,@Autowired

用途:自动装配Bean,进行依赖注入。Spring会自动注入依赖的Bean,可以用于字段,构造方法和方法上。

19,@Bean

用途:定义一个Spring Bean,定义的方法返回的对象可以被注入到Spring的容器。

20,@Conditional

用途:根据条件创建Bean,可以与自定义条件类一起使用,只有在条件满足时,Spring才会创建Bean。@ConditionalOnProperty是基于@Conditional注解,一般情况下用@ConditionalOnProperty更简单。

21,@Primary

用途:指定一个接口有多个实现时,优先选择的Bean。

22,@Qualifier

用途:配合@Autowired使用,用于指定注入的Bean的名称或id

23,@Lazy

用途:延迟初始化Bean,只有在首次使用时才创建Bean。

24,@Scope

用途:指定Bean的作用域(单例,原型,请求,会话等)

六,基于Lombok的注解

以下这些注解是需要引入Lombok的依赖才可以使用

25,@Data

用途:@Data是一个复合注解,集成了@Getter,@Setter,@ToString,@EqualsAndHashCode,@RequiredArgsConstuctor等注解

26,@AllArgsConstructor

用途:自动生成包含所有字段的构造方法

27,@NoArgsConstructor

用途:自动生成无参构造方法

28,@Builder

用途:生成支持链式编程的构造方法

如果对你有帮助,记得点赞关注哟!


http://www.ppmy.cn/devtools/89031.html

相关文章

【Material-UI】Autocomplete 组件中的虚拟化功能(Virtualization)详解

文章目录 一、虚拟化概述二、实现虚拟化的步骤1. 引入依赖2. 自定义 Popper 组件和 Listbox 组件3. 代码详解4. 性能优化 三、实际应用场景1. 大规模数据列表2. 高性能需求的应用 四、总结 在现代 Web 开发中,处理大量数据时,性能优化显得尤为重要。Mate…

Vue3 + js-echarts 实现前端大屏可视化

1、前言 此文章作为本人大屏可视化项目的入门学习笔记,以此作为记录,记录一下我的大屏适配解决方案,本项目是基于vite Vue3 js less 实现的,首先看ui,ui是网上随便找的,代码是自己实现的,后面…

Java02 Java程序结构

程序的主结构: 一个完整的Java程序,它的基本结构包括:class类、main方法、输出语句、注释。 命名规范和代码书写 新建项目命名 项目命名时可用数字,字母,下划线,$来命名。(注意:命名…

堆内存申请 - 华为OD统一考试(D卷)

OD统一考试(D卷) 分值: 100分 题解: Java / Python / C++ 题目描述 有一个总空间为100字节的堆,现要从中新申请一块内存,内存分配原则为: 优先分配紧接着前一块已使用的内存,分配空间足够时分配最接近申请大小的空闲内存。 输入描述 第1行是1个整数,表示期望申请的…

【JVM基础11】——垃圾回收-说一下JVM的分代回收?

目录 1- 引言:分代回收1-1 什么是分代回收(What)1-2 为什么要用分代回收?(Why) 2- ⭐核心:分代回收工作机制2-1 工作机制2-2 MinorGC、Mixed GC、FullGC的区别是什么 3- 总结3-1 说一下 JVM 的分…

C++标准模板(STL)- 类型支持 (类型属性,检查类型是否为 final 类类型,std::is_final)

类型特性 类型特性定义一个编译时基于模板的结构&#xff0c;以查询或修改类型的属性。 试图特化定义于 <type_traits> 头文件的模板导致未定义行为&#xff0c;除了 std::common_type 可依照其所描述特化。 定义于<type_traits>头文件的模板可以用不完整类型实例…

matplotlib显示opencv读取的图片颜色异常,BGR转RGB的两种方式:cv2.cvtColor与img[:,:,::-1]

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

如何用python提取音频

要用Python提取音频&#xff0c;你可以使用音频处理库。下面是一个简单的示例代码&#xff0c;展示了如何使用pydub库来提取音频中的音频片段。 首先&#xff0c;你需要安装pydub库。你可以使用pip来安装它&#xff1a; pip install pydub然后&#xff0c;你可以使用下面的代…