spring的常用注解汇总

在 Spring 和 Spring Boot 框架中,有许多核心注解被广泛应用。以下是常用的关键注解分类详解:


一、组件声明与依赖注入

注解作用示例
@Component通用组件声明 (Bean 的泛化形式)@Component public class ServiceImpl {...}
@Service标记服务层(业务逻辑层)组件@Service public class UserService {...}
@Repository标记持久层(DAO 层)组件,自动处理数据库异常@Repository public class UserDao {...}
@Controller标记 Web 控制器组件@Controller public class UserCtrl {...}
@RestController@Controller + @ResponseBody(REST API 专用)@RestController public class ApiCtrl {...}
@Autowired自动按类型依赖注入@Autowired private UserService service;
@Qualifier按名称指定注入的 Bean@Qualifier("mainDB") DataSource ds;
@ResourceJSR-250 标准注入(按名称)@Resource(name="slaveDB") DataSource ds;

二、配置与属性管理

注解作用
@Configuration声明配置类(替代 XML 配置)
@Bean声明方法返回对象作为 Spring Bean
@Value注入外部配置值${property.key}
@ConfigurationProperties批量绑定配置文件到 POJO(比 @Value 更结构化)
@PropertySource加载自定义 properties 文件
@EnableConfigurationProperties启用配置属性绑定

三、Web 与请求处理

注解HTTP 方法作用
@RequestMapping通用映射类/方法级别的请求映射
@GetMappingGET简化版 GET 请求映射
@PostMappingPOST简化版 POST 请求映射
@PutMappingPUT简化版 PUT 请求映射
@DeleteMappingDELETE简化版 DELETE 请求映射
@PatchMappingPATCH简化版 PATCH 请求映射
@RequestParam-获取 URL 查询参数
@PathVariable-获取 URL 路径变量
@RequestBody-接收 HTTP 请求体(如 JSON)
@ResponseBody-直接返回数据(非视图)
@CookieValue-获取 Cookie 值
@SessionAttribute-访问会话属性

四、事务管理

注解作用
@Transactional声明式事务管理(类/方法级)
@EnableTransactionManagement在配置类启用注解驱动的事务管理

五、测试相关

注解作用
@SpringBootTest启动完整的 Spring Boot 测试环境
@WebMvcTest专注于 MVC 控制器的测试(不加载完整上下文)
@DataJpaTest专注于 JPA 测试(使用内存数据库)
@MockBean在测试上下文中注入 Mock 对象
@Test标记测试方法(JUnit)

六、AOP 面向切面编程

注解作用
@Aspect声明切面类
@Before方法执行前切入
@After方法执行后切入(无论是否异常)
@AfterReturning方法正常返回后切入
@AfterThrowing方法抛出异常后切入
@Around环绕增强(最强大的通知类型)
@Pointcut定义可重用的切入点表达式

七、条件化配置 (Spring Boot)

注解作用
@ConditionalOnProperty当配置属性存在且匹配时生效
@ConditionalOnBean当指定 Bean 存在时生效
@ConditionalOnMissingBean当指定 Bean 不存在时生效
@ConditionalOnClass当指定类在 classpath 存在时生效
@ConditionalOnWebApplication当是 Web 应用时生效

八、调度与异步

注解作用
@Scheduled定时任务调度(支持 cron 表达式)
@EnableScheduling启用定时任务支持
@Async异步执行方法
@EnableAsync启用异步执行支持

九、缓存管理

注解作用
@Cacheable缓存方法结果
@CachePut更新缓存
@CacheEvict清除缓存
@EnableCaching启用缓存注解支持

十、其他实用注解

注解作用
@Lazy延迟初始化 Bean
@Primary指定同类型 Bean 的优先注入选项
@Scope定义 Bean 作用域(singleton, prototype 等)
@Profile按环境激活配置(dev, test, prod)
@Valid触发 JSR-303 Bean 校验(配合 @NotNull 等)

📌 最佳实践建议

  • 优先使用 @ConfigurationProperties 替代分散的 @Value
  • REST API 开发首选 @RestController + HTTP 方法注解
  • 数据库操作使用 @Transactional 确保事务完整性
  • 生产环境配置 @Profile("prod") 分离环境参数

这些注解共同构成了 Spring 生态的基石,通过声明式编程极大简化了企业级应用开发。掌握它们是高效使用 Spring 框架的关键。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/92701.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/92701.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Claude4、GPT4、Kimi K2、Gemini2.5、DeepSeek R1、Code Llama等2025主流AI编程大模型多维度对比分析报告

2025主流AI编程大模型多维度对比分析报告引言:AI编程大模型的技术格局与选型挑战一、核心模型概览:技术定位与市场份额1.国际第一梯队(1)Claude 4系列(Anthropic)(2)GPT-4.1&#xf…

Overleaf中下载.aux和.bbl文件

有些会议提交终稿的时候,可能会让上传.bbl和.aux文件,但是使用Overleaf下载下来的压缩包中缺没有这些文件在网上搜了一下都是用的旧版的Overleaf的教程,或者教程比较繁琐,其实新版的Overleaf也可以直接下载 打开你的论文编译好&am…

uniapp写app做测试手机通知栏展示内容

uniapp写app做测试手机通知栏展示内容 以下代码:只是个简单测试能不能给手机发送消息,能不能引导打开通知权限,能不能进行跳转的功能, 增加 notify.js 以下文件 // 模拟本地通知功能 export function showNotification() {// 1. 检查通知…

分布式云计算:未来计算架构的全新演进

随着信息技术的不断发展,尤其是云计算技术的飞速进步,企业和个人对计算资源的需求已经从传统的单一数据中心向更为灵活、可扩展的分布式架构转变。分布式云计算作为一种新兴的云计算模型,旨在将计算资源和数据存储分布在多个地理位置上,从而提供更加高效、安全和可靠的服务…

2025年海外短剧独立站开发:H5+PC端双平台技术实践与增长策略

引言在全球化内容消费浪潮下,海外短剧市场正经历爆发式增长。据DataEye《2025H1海外微短剧行业数据报告》显示,2025年海外短剧市场规模预计突破45亿美元,其中东南亚、拉美等新兴市场贡献超30%增量。本文将以某头部短剧平台的双平台开发实践为…

OpenAI发布ChatGPT Agent,AI智能体迎来关键变革

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《GPT多模态大模型与AI Agent智能体》(跟我一起学人工智能)【陈敬雷编著】【清华大学出版社】 清华《GPT多模态大模型与AI Agent智能体》书籍配套视频课程【陈敬雷…

企业级安全威胁检测与响应(EDR/XDR)架构设计

在这个网络威胁如洪水猛兽的时代,企业的安全防护不能再像守城门的老大爷一样只会喊"什么人?口令!"了。我们需要的是一套像FBI一样具备全方位侦察能力的智能防护系统。 📋 文章目录 1. 什么是EDR/XDR?别被这…

Stream流-Java

Stream流的作用&#xff1a;结合了Lambda表达式&#xff0c;简化集合&#xff0c;数组的操作Stream流的使用步骤&#xff1a;1. 先得到一条Stream流&#xff08;流水线&#xff09;&#xff0c;并把数据放上去获取方式方法名说明单列集合default Stream<E> stream()Colle…

Leetcode 327. 区间和的个数

1.题目基本信息 1.1.题目描述 给你一个整数数组 nums 以及两个整数 lower 和 upper 。求数组中&#xff0c;值位于范围 [lower, upper] &#xff08;包含 lower 和 upper&#xff09;之内的 区间和的个数 。 区间和 S(i, j) 表示在 nums 中&#xff0c;位置从 i 到 j 的元素…

MinIO 版本管理实践指南(附完整 Go 示例)

✨ 前言 在构建企业级对象存储系统时,“对象的版本管理”是一个关键特性。MinIO 作为一款高性能、Kubernetes 原生的 S3 兼容对象存储系统,也支持强大的版本控制功能。 本文将通过 Go 示例代码 + 实操讲解 的形式,手把手带你掌握 MinIO 的版本控制能力,包括开启版本控制、…

数组toString方法及类型检测修复方案

在 JavaScript 中&#xff0c;数组的 toString() 方法被覆盖&#xff08;重写&#xff09;为返回数组元素的逗号分隔字符串&#xff0c;而不是原始的 [object Array] 类型标识。以下是详细解释和修复方案&#xff1a;问题原因Array.prototype.toString 被覆盖数组继承自 Object…

mysql索引底层B+树

B树胜出的关键特性&#xff1a;矮胖树结构&#xff1a;3-4层高度即可存储2000万条记录&#xff08;假设每页存1000条&#xff09; 叶子链表&#xff1a;所有数据存储在叶子节点&#xff0c;并通过双向链表连接 非叶导航&#xff1a;非叶子节点仅存储键值&#xff0c;不保存数据…

AI开放课堂:钉钉MCP开发实战

我们正处在AI技术爆发的时代&#xff0c;也处于企业数字化蓬勃发展的时代。如何利用AI技术&#xff0c;突破模型自身知识的局限&#xff0c;安全、高效地与外部世界连接和交互&#xff0c;是当前所有AI开发者在企业数字化中面临的问题之一。 MCP&#xff08;Model Context Prot…

DigitalOcean 一键模型部署,新增支持百度开源大模型ERNIE 4.5 21B

使用过DigitalOcean GPU Droplet 服务器的用户应该对我们的一键模型部署功能不陌生。DigitalOcean 的一键模型部署 (1-Click Models) 功能是 DO 为开发者和企业提供的一种便捷方式&#xff0c;用于快速部署和运行预训练的生成式 AI 模型&#xff0c;尤其是大型语言模型 (LLM)。…

【嵌入式面试】嵌入式笔试与面试宝典(offer必来)

&#x1f48c; 所属专栏&#xff1a;【嵌入式面试】 &#x1f600; 作  者&#xff1a;兰舟比特 &#x1f43e; &#x1f680; 个人简介&#xff1a;热爱开源系统与嵌入式技术&#xff0c;专注 Linux、网络通信、编程技巧、面试总结与软件工具分享&#xff0c;持续输出实用干…

企业级数据分析创新实战:基于表格交互与智能分析的双引擎架构

引言&#xff1a;数字化转型中数据协同困境与系统融合挑战 在数字化转型实践中&#xff0c;企业普遍面临数据系统与业务运营的协同困境&#xff0c;主要表现为数据处理平台与核心业务流程的架构隔离、分析成果与决策闭环的价值断层、以及双重数据维护带来的资源损耗。这种系统…

openbmc 日志系统继续分析

1.说明 1.1 总体说明 本节是继: https://blog.csdn.net/wit_yuan/article/details/147142407?spm=1011.2415.3001.5331 后的继续分析的文档。 该篇内容主要目的是分析整个openbmc的日志系统。 注意解读文档: https://github.com/openbmc/docs/blob/master/designs/event-l…

【JIRA小白如何使用它进行bug管理】

JIRA小白如何使用它进行bug管理 提示&#xff1a;入职一般来说&#xff0c;公司会提供账号&#xff0c;不需要部署如何提bug&#xff1a; JIRA有两种提交方式 在执行测试用例中在bug管理项目中新建提bug建议或者注意事项&#xff1a; 标题&#xff1a;执行完A之后&#xff0c;发…

陪诊小程序系统开发:开启医疗陪护新时代

在快节奏的现代生活中&#xff0c;人们面临着各种各样的压力&#xff0c;健康问题也日益凸显。当生病就医时&#xff0c;尤其是对于老年人、孕妇、残障人士等特殊群体&#xff0c;独自前往医院往往会遇到诸多困难&#xff0c;如不熟悉医院流程、行动不便、心理上感到孤独无助等…