超实用!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…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...

云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...

Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...

Ubuntu系统多网卡多相机IP设置方法
目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机,交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息,系统版本:Ubuntu22.04.5 LTS;内核版本…...

若依登录用户名和密码加密
/*** 获取公钥:前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...

21-Oracle 23 ai-Automatic SQL Plan Management(SPM)
小伙伴们,有没有迁移数据库完毕后或是突然某一天在同一个实例上同样的SQL, 性能不一样了、业务反馈卡顿、业务超时等各种匪夷所思的现状。 于是SPM定位开始,OCM考试中SPM必考。 其他的AWR、ASH、SQLHC、SQLT、SQL profile等换作下一个话题…...

HTML版英语学习系统
HTML版英语学习系统 这是一个完全免费、无需安装、功能完整的英语学习工具,使用HTML CSS JavaScript实现。 功能 文本朗读练习 - 输入英文文章,系统朗读帮助练习听力和发音,适合跟读练习,模仿学习;实时词典查询 - 双…...