超实用!Spring Boot 常用注解详解与应用场景
目录
一、Web MVC 开发时,对于三层的类注解
1.1 @Controller
1.2 @Service
1.3 @Repository
1.4 @Component
二、依赖注入的注解
2.1 @Autowired
2.2 @Resource
2.3 @Resource 与 @Autowired 的区别
2.3.1 实例讲解
2.4 @Value
2.5 @Data
三、Web 常用的注解
3.1 @RequestMapping
3.2 @RequestParam
3.2.1 语法
3.2.2 实例
3.3 @PathVariable
3.4 @RequestParam 和 @PathVariable 区别
3.5 @ResponseBody 和 @RequestBody
3.6 @RestController
3.7 @ControllerAdvice 和 @ExceptionHandler
四、Spring Boot 常用的注解
4.1 @SpringBootApplication
4.2 @EnableAutoConfiguration
4.3 @Configuration
4.4 @ComponentScan
五、AOP 常用的注解
5.1 @Aspect
5.2 @After
5.3 @Before
5.4 @Around
5.5 @Pointcut
六、测试常用的注解
6.1 @SpringBootTest
6.2 @Test
6.3 @RunWith
6.4 其他测试注解
七、其他常用注解
7.1 @Transactional
7.2 @Cacheable
7.3 @PropertySource
7.4 @Async
7.5 @EnableAsync
7.6 @EnableScheduling
7.7 @Scheduled

一、Web MVC 开发时,对于三层的类注解
1.1 @Controller
@Controller 注解用于标识一个类是 Spring MVC 控制器,处理用户请求并返回相应的视图。
@Controller
public class MyController {// Controller methods
}
1.2 @Service
@Service 注解用于标识一个类是业务层组件,通常包含了业务逻辑的实现。
@Service
public class MyService {// Service methods
}
1.3 @Repository
@Repository 注解用于标识一个类是数据访问层组件,通常用于对数据库进行操作
@Repository
public class MyRepository {// Data access methods
}
1.4 @Component
@Component 是一个通用的组件标识,可以用于标识任何层次的组件,但通常在没有更明确的角色时使用。
@Component
public class MyComponent {// Class implementation
}
二、依赖注入的注解
2.1 @Autowired
@Autowired 注解用于自动装配 Bean,可以用在字段、构造器、方法上
@Service
public class MyService {@Autowiredprivate MyRepository myRepository;
}
2.2 @Resource
@Resource 注解也用于依赖注入,通常用在字段上,可以指定要注入的 Bean 的名称
@Service
public class MyService {@Resource(name = "myRepository")private MyRepository myRepository;
}
2.3 @Resource 与 @Autowired 的区别
@Autowired是 Spring 提供的注解,按照类型进行注入。@Resource是 JavaEE 提供的注解,按照名称进行注入。在 Spring 中也可以使用,并且支持指定名称。
2.3.1 实例讲解
新建 Animal 接口类,以及两个实现类 Cat 和 Dog。
public interface Animal {String makeSound();
}@Component
public class Cat implements Animal {@Overridepublic String makeSound() {return "Meow";}
}@Component
public class Dog implements Animal {@Overridepublic String makeSound() {return "Woof";}
}
编写测试用例:
@Service
public class AnimalService {@Autowiredprivate Animal cat;@Resource(name = "dog")private Animal dog;public String getCatSound() {return cat.makeSound();}public String getDogSound() {return dog.makeSound();}
}
2.4 @Value
@Value 注解用于从配置文件中读取值,并注入到属性中。
@Service
public class MyService {@Value("${app.message}")private String message;
}
2.5 @Data
@Data 是 Lombok 提供的注解,用于自动生成 Getter、Setter、toString 等方法。
@Data
public class MyData {private String name;private int age;
}
三、Web 常用的注解
3.1 @RequestMapping
@RequestMapping 注解用于映射请求路径,可以用在类和方法上。
@Controller
@RequestMapping("/api")
public class MyController {@GetMapping("/hello")public String hello() {return "Hello, Spring!";}
}
3.2 @RequestParam
@RequestParam 注解用于获取请求参数的值。
3.2.1 语法
@RequestParam(name = "paramName", required = true, defaultValue = "default")
3.2.2 实例
@GetMapping("/greet")
public String greet(@RequestParam(name = "name", required = false, defaultValue = "Guest") String name) {return "Hello, " + name + "!";
}
3.3 @PathVariable
@PathVariable 注解用于从 URI 中获取模板变量的值。
@GetMapping("/user/{id}")
public String getUserById(@PathVariable Long id) {// Retrieve user by ID
}
3.4 @RequestParam 和 @PathVariable 区别
@RequestParam用于获取请求参数。@PathVariable用于获取 URI 中的模板变量。
3.5 @ResponseBody 和 @RequestBody
@ResponseBody注解用于将方法的返回值直接写入 HTTP 响应体中。@RequestBody注解用于从 HTTP 请求体中读取数据。
3.6 @RestController
@RestController 注解相当于 @Controller 和 @ResponseBody 的组合,用于标识 RESTful 风格的控制器。
@RestController
@RequestMapping("/api")
public class MyRestController {@GetMapping("/hello")public String hello() {return "Hello, Spring!";}
}
3.7 @ControllerAdvice 和 @ExceptionHandler
@ControllerAdvice 注解用于全局处理异常,@ExceptionHandler 用于定义处理特定异常的方法。
@ControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(Exception.class)public ResponseEntity<String> handleException(Exception e) {return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Internal Server Error");}
}
四、Spring Boot 常用的注解
4.1 @SpringBootApplication
@SpringBootApplication 是一个复合注解,包含了 @SpringBootConfiguration、@EnableAutoConfiguration 和 @ComponentScan
@SpringBootApplication
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}
}
4.2 @EnableAutoConfiguration
@EnableAutoConfiguration 注解用于开启 Spring Boot 的自动配置机制。
4.3 @Configuration
@Configuration 注解用于定义配置类,替代传统的 XML 配置文件。
@Configuration
public class MyConfig {@Beanpublic MyBean myBean() {return new MyBean();}
}
4.4 @ComponentScan
@ComponentScan 注解用于配置组件扫描的基础包。
@SpringBootApplication
@ComponentScan(basePackages = "com.example")
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}
}
五、AOP 常用的注解
5.1 @Aspect
@Aspect 注解用于定义切面类,通常与其他注解一起使用。
@Aspect
@Component
public class MyAspect {// Aspect methods
}
5.2 @After
@After 注解用于定义后置通知,方法在目标方法执行后执行。
@After("execution(* com.example.service.*.*(..))")
public void afterMethod() {// After advice
}
5.3 @Before
@Before 注解用于定义前置通知,方法在目标方法执行前执行
@Before("execution(* com.example.service.*.*(..))")
public void beforeMethod() {// Before advice
}
5.4 @Around
@Around 注解用于定义环绕通知,方法可以控制目标方法的执行。
@Around("execution(* com.example.service.*.*(..))")
public Object aroundMethod(ProceedingJoinPoint joinPoint) throws Throwable {// Before adviceObject result = joinPoint.proceed(); // Proceed to the target method// After advicereturn result;
}
5.5 @Pointcut
@Pointcut 注解用于定义切点,将切点表达式提取出来,供多个通知共享。
@Pointcut("execution(* com.example.service.*.*(..))")
public void serviceMethods() {// Pointcut expression
}
六、测试常用的注解
6.1 @SpringBootTest
@SpringBootTest 注解用于启动 Spring Boot 应用程序的测试。
@SpringBootTest
public class MyApplicationTests {// Test methods
}
6.2 @Test
@Test 注解用于标识测试方法。
@Test
public void myTestMethod() {// Test method
}
6.3 @RunWith
@RunWith 注解用于指定运行测试的类。
@RunWith(SpringRunner.class)
@SpringBootTest
public class MyApplicationTests {// Test methods
}
6.4 其他测试注解
@Before: 在测试方法之前执行。@After: 在测试方法之后执行。@BeforeClass: 在类加载时执行一次。@AfterClass: 在类卸载时执行一次。
七、其他常用注解
7.1 @Transactional
@Transactional 注解用于声明事务,通常用在方法或类上。
@Service
@Transactional
public class MyTransactionalService {// Transactional methods
}
7.2 @Cacheable
@Cacheable 注解用于声明方法的结果可以被缓存。
@Service
public class MyCachingService {@Cacheable("myCache")public String getCachedData(String key) {// Method implementation}
}
7.3 @PropertySource
@PropertySource 注解用于引入外部的属性文件。
@Configuration
@PropertySource("classpath:my.properties")
public class MyConfig {// Configuration methods
}
7.4 @Async
@Async 注解用于声明异步方法,通常用在方法上。
@Service
public class MyAsyncService {@Asyncpublic void asyncMethod() {// Asynchronous method implementation}
}
7.5 @EnableAsync
@EnableAsync 注解用于开启异步方法的支持。
@Configuration
@EnableAsync
public class MyConfig {// Configuration methods
}
7.6 @EnableScheduling
@EnableScheduling 注解用于开启计划任务的支持。
@Configuration
@EnableScheduling
public class MyConfig {// Configuration methods
}
7.7 @Scheduled
@Scheduled 注解用于定义计划任务的执行时间。
@Service
public class MyScheduledService {@Scheduled(cron = "0 0 12 * * ?") // Run every day at 12 PMpublic void scheduledMethod() {// Scheduled method implementation}
}
以上几乎涵盖了所有springBoot和springFramework的常见注解,博客整体框架参考学习Spring Boot 注解,这一篇就够了(附带部分注解实例讲解)_springboot注解 举例-CSDN博客
相关文章:
超实用!Spring Boot 常用注解详解与应用场景
目录 一、Web MVC 开发时,对于三层的类注解 1.1 Controller 1.2 Service 1.3 Repository 1.4 Component 二、依赖注入的注解 2.1 Autowired 2.2 Resource 2.3 Resource 与 Autowired 的区别 2.3.1 实例讲解 2.4 Value 2.5 Data 三、Web 常用的注解 3.1…...
【古月居《ros入门21讲》学习笔记】11_客户端Client的编程实现
目录 说明: 1. 服务模型 2. 实现过程(C) 创建功能包 创建客户端代码(C) 配置客户端代码编译规则 编译 运行 3. 实现过程(Python) 创建客户端代码(Python) 运行…...
小程序和Vue写法的区别主要有什么不同
1.语法不同:小程序使用的是WXML、WXSS和JS,而Vue使用的是HTML、CSS和JSX。 2.数据绑定方式不同:小程序使用的是双向数据绑定,而Vue使用的是单向数据流。 1)在小程序中需要使用e.currentTarget.dataset.*的方式获取&…...
Flutter之MQTT使用
1.添加依赖: 首先,需要在Flutter项目的pubspec.yaml文件中添加mqtt_client依赖。 dependencies:#https://pub.dev/packages/mqtt_clientmqtt_client: ^10.0.02.创建MQTT客户端并连接到MQTT服务器:2.创建一个MQTT客户端实例来进行连接和通信 Fu…...
vr红色教育虚拟展馆全景制作提升单位品牌形象
720全景展馆编辑平台以其独特的优势,为展览行业带来了革命性的变革。这种创新的技术应用为参展商提供了更高效、更便捷、更全面的展示解决方案,进一步提升了展览行业的水平和影响力。 一、提升展示效果,增强品牌形象 720全景展馆编辑平台通过…...
【Spring】Spring是什么?
文章目录 前言什么是Spring什么是容器什么是 IoC传统程序开发控制反转式程序开发理解Spring IoCDI Spring帮助网站 前言 前面我们学习了 servlet 的相关知识,但是呢?使用 servlet 进行网站的开发步骤还是比较麻烦的,而我们本身程序员就属于是…...
事件循环机制及常见面试题
借鉴: 《Javascript 忍者秘籍》第二版,事件循环篇 面试 | JS 事件循环 event loop 经典面试题含答案 - 知乎 (zhihu.com) 概念 主栈队列就是一个宏任务,每一个宏任务执行完就会执行宏任务中的微任务,直到微任务全部都执行完&a…...
智能监控平台/视频共享融合系统EasyCVR接入RTSP协议视频流无法播放原因是什么?
视频集中存储/云存储/视频监控管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。AI智能/大数据视频分析EasyCVR平台已经广泛应用在工地、工厂、园区、楼…...
c# statusStrip 显示电脑主机名、IP地址、MAC地址
控件: ToolStripStatusLabel 主机名: Dns.GetHostName() IP地址: Dns.GetHostAddresses(Dns.GetHostName())[0].ToString() 当前程序的版本: Assembly.GetExecutingAssembly().GetName().Version.ToString() 获取系统版本 …...
Cesium.CustomShader颜色值显示错误
官方示例: Cesium Sandcastle 测试过程: 1、修改示例,把customshader中的fragmentShaderText替换为如下代码 void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material) {//注意:下述颜色的b值是0.1&#x…...
XSLVGL2.0 User Manual 页面管理器(v2.0)
XSLVGL2.0 开发手册 XSLVGL2.0 User Manual 页面管理器 1、概述2、特性3、APIs3.1、xs_page_init3.2、xs_page_wait_inited3.3、xs_page_exit3.4、xs_page_acquire3.5、xs_page_release3.6、xs_page_set_bootlogo3.7、xs_page_setup_clear_finish3.8、xs_page_setup_is_finish…...
论文学习-Attention Is All You Need
Attention Is All You Need 目前暂时不会用到,大概了解一下即可。 Recurrent model 序列化的计算方式,难以并行,随着序列的增长,以前的记忆会逐渐丢失。而Attention机制可以观察到句子中所有的信息,不受距离影响&…...
Springboot 使用 RabbitMq 延迟插件 实现订单到期未支付取消订单、设置提醒消息
示例业务场景: 场景1:客户下单后,15分钟内未支付取消订单! 场景2:客户下单支付成功后,5分钟内商家未处理订单,需要推送一条消息提醒商家。如依旧未处理,则需要每隔2分钟消息提醒一下…...
Linux安装Tesseract-OCR(操作系统CentOS)
Linux安装Tesseract-OCR 第一步,安装依赖第二步,下载安装包第三步,安装leptonica库第四步,安装tesseract第五步,添加语言包第六步,测试 第一步,安装依赖 sudo yum install libpng-devel rpm -q…...
pair和typedef
文章目录 一、pair用法1.2、pair的创建和初始化1.3、pair对象的操作1.4、(make_pair)生成新的pair对象1.5、通过tie获取pair元素值 2、typedef2.1、什么是typedef2.2、typedef用法2.2.1、对于数据类型使用例如:2.2.2、对于指针的使用例如2.2.3、对于结构体的使用 2.…...
rdf-file:分布式环境下的文件处理
一:简介 数据量大了以后,单机解析或者生成文件的效率就很低,需要通过集群处理: 机构过来的文件:我们先对文件进行分片,在利用集群集群处理分片文件。给机构文件:分库分表数据,每个…...
Maven下载与安装教程
一、下载 Maven 进入 Maven 官网:maven.apache.org/download.cgi 选择 .zip 文件下载,最新版本是 3.9.5 二、安装 Maven 将 .zip 文件解压到没有中文没有空格的路径下。例如下图,在创建一个repository的空文件夹在他的下面,用于…...
C++(20):通过starts_with/ends_with检查字符串
C20提供了starts_with用于检查字符串是否以某个字符串开始,ends_with用于检查是否以某个字符串结束: #include <iostream> #include <string> using namespace std;int main() {string str "hello and 88";cout<<str.star…...
YOLOv8+Nanodet强强联合改进标签分配:使用NanoDet动态标签分配策略,同时集成VFL全新损失,来打造新颖YOLOv8检测器
💡本篇内容:YOLOv8+Nanodet强强联合改进标签分配:使用NanoDet动态标签分配策略,同时集成VFL全新损失,来打造新颖YOLOv8检测器 💡🚀🚀🚀本博客 YOLO系列 + 改进NanoDet模型的动态标签分配策略源代码改进 💡一篇博客集成多种创新点改进:VFL损失函数 + Nanodet…...
base64字符串转成file
分割base64字符串,获取base64的格式和ASCII字符串;使用atob()方法将base64中的ASCII字符串解码成二进制数据"字符串";将二进制数据按位放入8 位无符号整型数组中适用new File()方法将ArrayBuffer转换成file对象 const base64 &qu…...
m4s-converter终极指南:3步解锁B站缓存视频的离线观看自由
m4s-converter终极指南:3步解锁B站缓存视频的离线观看自由 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经在B站缓存了心爱…...
借脑之术:一根记忆枝条,嫁接到另一棵树上 —— Memory Grafting 深度解读
论文信息 标题 Memory Grafting: Scaling Language Model Pre-training via Offline Conditional Memory 作者 Runxi Cheng, Yuchen Guan, Yongxian Wei, Qianpu Sun, Qixiu Li, Sinan Du, Feng Xiong, Chun Yuan, Yan Lu, Yeyun Gong (10人) 机构 微软亚洲研究院 (Microsoft R…...
新手教程使用curl命令快速测试Taotoken的OpenAI兼容接口
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 新手教程:使用curl命令快速测试Taotoken的OpenAI兼容接口 基础教程类,面向刚注册Taotoken的开发者…...
Taotoken用量看板如何帮助团队分析并优化大模型API支出
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken用量看板如何帮助团队分析并优化大模型API支出 对于团队技术负责人或项目经理而言,管理大模型API支出并非易事…...
2026年湖南旧房改造,原来老房升级智能家居有这些攻略?
引言随着智能家居的发展,越来越多湖南的旧房业主希望将老房升级为智能住宅。2026年,旧房改造智能家居有哪些实用攻略呢?华为鸿蒙智家株洲红星店凭借其独特的技术和产品优势,为旧房改造提供了优质的解决方案。旧房改造智能家居的必…...
Win11蓝屏修复了?实测UHUB V5.15到V5.16版本升级,虚拟摄像头设置避坑指南
Win11蓝屏修复实测:UHUB V5.15到V5.16版本升级全攻略与虚拟摄像头深度优化最近在调试一套无人直播系统时,发现不少同行还在被Win11蓝屏问题困扰。作为从XCMS时代就开始使用这套工具的老用户,我完整经历了从音视频不同步到驱动框架彻底重构的技…...
GTA5线上小助手:智能助手让你的洛圣都冒险更精彩
GTA5线上小助手:智能助手让你的洛圣都冒险更精彩 【免费下载链接】GTA5OnlineTools GTA5线上小助手 项目地址: https://gitcode.com/gh_mirrors/gt/GTA5OnlineTools 想要在《侠盗猎车手5》线上模式中获得更流畅的游戏体验吗?GTA5线上小助手为你提…...
DeepSeek负载均衡失效导致LLM响应延迟飙升300%?紧急回滚+根因分析全流程复盘(含Wireshark抓包关键证据)
更多请点击: https://kaifayun.com 第一章:DeepSeek负载均衡方案 DeepSeek大模型服务在高并发推理场景下,需依托稳定、低延迟、可扩展的负载均衡架构保障SLA。本方案基于四层(TCP/SSL)与七层(HTTP/HTTPS&a…...
解密AliceSoft游戏资源处理:从提取到编辑的完整解决方案
解密AliceSoft游戏资源处理:从提取到编辑的完整解决方案 【免费下载链接】alice-tools Tools for extracting/editing files from AliceSoft games. 项目地址: https://gitcode.com/gh_mirrors/al/alice-tools 你是否曾经想要深入了解AliceSoft游戏的内部结构…...
3步解锁:开源工具Applera1n完全指南——iOS 15-16激活锁绕过方案
3步解锁:开源工具Applera1n完全指南——iOS 15-16激活锁绕过方案 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n Applera1n是一款专为iOS 15-16系统设计的免费开源激活锁绕过工具ÿ…...
