Spring 框架常用注解大全
摘要本文系统整理了 Spring 框架及其相关生态Spring Boot、Spring MVC、JPA 等中的常用注解按照功能分类进行详细说明帮助开发者快速查阅和理解各个注解的作用和用法。一、Bean 声明与注入1.1 声明 Bean 的注解Component通用组件注解没有明确的角色Service在业务逻辑层Service 层使用Repository在数据访问层DAO 层使用Controller在展现层Spring MVC使用1.2 注入 Bean 的注解AutowiredSpring 提供的自动装配注解InjectJSR-330 提供的依赖注入注解ResourceJSR-250 提供的资源注入注解1.3 Bean 生命周期与作用域Bean注解在方法上声明当前方法的返回值为一个 BeanBean(initMethodinit, destroyMethodcleanup)指定初始化和销毁方法Scope定义 Bean 的作用域如 Scope(prototype) 声明为原型模式PostConstruct在构造函数执行完之后执行PreDestroy在 Bean 销毁之前执行二、配置与属性2.1 配置类注解Configuration声明当前类为配置类相当于 Spring 的 XML 配置文件ComponentScan自动扫描指定包下的 Component、Service、Repository、Controller 类并注册为 BeanWiselyConfiguration组合注解可替代 Configuration 和 ComponentScanImport导入其他配置类ImportResource加载 XML 配置文件ContextConfiguration加载配置文件如 ContextConfiguration(classes {TestConfig.class})WebAppConfiguration指定加载的 ApplicationContext 是 WebApplicationContext2.2 属性注入与配置Value属性注入Value(普通字符串)普通字符串注入Value(#{systemProperties[os.name]})注入操作系统属性Value(#{ T(java.lang.Math).random() * 100.0 })注入表达式结果Value(#{demoService.another})注入其他 Bean 属性Value(classpath:com/example/test.txt)注入文件资源Value(http://www.example.com)注入网址资源Value(${book.name})注入配置文件属性使用 $ 符号ConfigurationProperties将 properties 属性和 Bean 关联实现类型安全配置EnableConfigurationProperties开启对 ConfigurationProperties 注解配置 Bean 的支持2.3 环境配置Profile为不同环境使用不同的配置如 Profile(dev)ActiveProfiles声明活动的 profileConditional条件注解根据特定条件创建特定的 Bean三、AOP 与事务3.1 AOP 切面编程Aspect声明这是一个切面After、Before、Around定义切面可直接将拦截规则作为参数PointCut专门定义拦截规则然后在 After、Before、Around 中调用EnableAspectJAutoProxy开启 Spring 对 AspectJ 切面的支持3.2 事务管理Transactional声明式事务处理EnableTransactionManagement开启对注解式事务的支持四、缓存与调度4.1 缓存注解Cacheable数据缓存EnableCaching开启注解式缓存的支持4.2 异步与调度Async声明这是一个异步任务可在类级别和方法级别声明EnableAsync开启异步任务支持多线程Scheduled声明这是一个计划任务支持 cron、fixedDelay、fixedRateEnableScheduling开启对计划任务的支持定时器五、Spring MVC 注解5.1 控制器相关Controller声明类为 Spring MVC 控制器RestControllerController ResponseBody 组合注解ControllerAdvice全局控制器配置ExceptionHandler全局异常处理如 ExceptionHandler(valueException.class)5.2 请求映射与参数处理RequestMapping映射 WEB 请求访问路径和参数ResponseBody将返回值放入 response 体内而不是返回页面RequestBody允许 request 参数在 request 体中PathVariable接收路径参数如 /test/{id}ModelAttribute绑定键值对到 Model 中InitBinder设置 WebDataBinder自动绑定前台请求参数到 Model六、Spring Boot 核心注解SpringBootApplicationSpring Boot 项目的核心注解组合了 Configuration、EnableAutoConfiguration 和 ComponentScanEnableAutoConfiguration让 Spring Boot 根据依赖自动配置 Spring 框架EnableAutoConfiguration(exclude{xxx.class})禁用特定的自动配置七、数据持久化JPA注解7.1 实体映射Entity映射数据库实体类Table指定表名如 Table(name S_PRODUCEINFO)Id声明主键 IDColumn映射数据库字段如 Column(name app_name, unique true, length 50)7.2 字段映射Enumerated枚举类型映射如 Enumerated(EnumType.STRING)Temporal时间格式映射Temporal(TemporalType.TIMESTAMP)完整日期时间Temporal(TemporalType.DATE)年月日Temporal(TemporalType.TIME)时分秒CreationTimestamp创建时间自动填充UpdateTimestamp更新时间自动填充7.3 数据访问EnableJpaRepositories开启对 Spring Data JPA Repository 的支持八、测试相关注解RunWith测试运行器RunWith(JUnit4.class)使用 JUnit4 运行RunWith(SpringJUnit4ClassRunner.class)在 Spring 测试环境中运行RunWith(Suite.class)测试套件Before在测试方法前初始化九、其他实用注解9.1 Enable* 注解集合EnableWebMVC开启对 Web MVC 的配置支持EnableDiscoveryClient让服务发现服务器Spring Cloud 服务发现EnableEurekaServer注册服务器Spring Cloud 服务注册9.2 警告抑制SuppressWarnings(unchecked)忽略 unchecked 警告SuppressWarnings(serial)忽略 serializable 类缺少 serialVersionUID 警告SuppressWarnings(deprecation)忽略使用已弃用方法的警告SuppressWarnings({unchecked, deprecation})同时忽略多种警告十、综合示例Entity Table(name S_PRODUCEINFO) Data NoArgsConstructor AllArgsConstructor public class ProduceInfoEntity { Id Column(name app_name, unique true, length 50) private String name; Column(name status) Enumerated(EnumType.STRING) private ProduceStatus status; Column(name create_time, updatable false) Temporal(TemporalType.TIMESTAMP) CreationTimestamp private Date createTime; Column(name update_time) Temporal(TemporalType.TIMESTAMP) UpdateTimestamp private Date updateTime; }注解说明Entity映射数据库实体类Table(name S_PRODUCEINFO)指定表名Id声明主键 IDColumn对应数据库字段及属性Enumerated(EnumType.STRING)采用枚举值类型和数据库字段交互Temporal时间格式映射获取规定格式的日期CreationTimestamp创建时间自动填充UpdateTimestamp更新时间自动填充

相关新闻

Pinia状态管理:三种状态修改方式详解与实战场景解析

Pinia状态管理:三种状态修改方式详解与实战场景解析

1. 项目概述:为什么我们需要关注Pinia的状态修改在Vue 3的生态里,状态管理是构建复杂应用绕不开的一环。Pinia作为官方推荐的新一代状态管理库,以其简洁的API、优秀的TypeScript支持和对Composition API的原生友好,迅速成为了Vue开…

2026/8/18 1:19:38 阅读更多 →
智谱GLM 5.3模型:从API调用到IDE集成的开发者实战指南

智谱GLM 5.3模型:从API调用到IDE集成的开发者实战指南

这次我们来看智谱 GLM 5.3 模型。它不是一个需要本地部署、测试显存占用的开源项目,而是一个标志着中国大模型能力进入新阶段的商业模型。对于开发者而言,核心问题不再是“中国模型能不能用”,而是“GLM 5.3 能做什么、怎么用、以及它带来的新…

2026/8/18 1:19:38 阅读更多 →
彻底清除WSL卸载后残留的Linux图标:注册表清理与Shell命名空间解析

彻底清除WSL卸载后残留的Linux图标:注册表清理与Shell命名空间解析

1. 问题缘起:一个“顽固”的Linux图标最近给一台主力开发机做系统瘦身,准备把闲置的Windows Subsystem for Linux 2(WSL2)环境彻底清理掉。按照常规流程,我在PowerShell里运行了wsl --unregister Ubuntu,确…

2026/8/18 1:19:38 阅读更多 →

最新新闻

电动汽车充电桩嵌入式系统开发:从硬件设计到软件架构的工程实践

电动汽车充电桩嵌入式系统开发:从硬件设计到软件架构的工程实践

1. 从“充电桩”到“嵌入式系统”:一个硬件工程师的视角转变几年前,当我第一次接到一个电动汽车充电桩(EVSE)的硬件设计任务时,我的第一反应和很多同行一样:这不就是个“高级插线板”吗?无非是控…

2026/8/19 5:57:45 阅读更多 →
基于Node.js与Redis队列的自动化实体信件定时寄送系统设计与实现

基于Node.js与Redis队列的自动化实体信件定时寄送系统设计与实现

1. 项目概述:当“慢递”遇上自动化“Sleepy Snail-Mail Concierge”,直译过来是“瞌睡的蜗牛邮件礼宾服务”。这个名字本身就充满了故事感和反差萌。在一切都追求即时、秒回的数字时代,这个项目反其道而行之,它要做的不是加速&…

2026/8/19 5:57:45 阅读更多 →
基于micro:bit的音乐播放器开发:从PCM音频到SPI Flash存储的嵌入式实践

基于micro:bit的音乐播放器开发:从PCM音频到SPI Flash存储的嵌入式实践

1. 项目概述:当micro:bit遇见音乐,BoomBit诞生记如果你手头有一块micro:bit,除了用它来显示个爱心、做个计步器,有没有想过把它变成一个能真正播放音乐、甚至有点“酷”的随身播放器?这就是BoomBit项目想做的事。它不是…

2026/8/19 5:57:45 阅读更多 →
基于Matter协议与能量收集技术的自供电智能电表设计

基于Matter协议与能量收集技术的自供电智能电表设计

1. 项目缘起:为什么我们需要一个“自供电”的智能电表?如果你正在搭建一个智能家居系统,或者对家庭能耗监测感兴趣,那么“电表”这个设备你一定不陌生。传统的智能电表,无论是通过Wi-Fi、Zigbee还是蓝牙连接&#xff0…

2026/8/19 5:57:45 阅读更多 →
构建个人屏幕时间监控系统:从数据量化到行为干预

构建个人屏幕时间监控系统:从数据量化到行为干预

1. 项目概述:为什么我们需要“屏幕时间监控”?最近几年,我身边的朋友、同事,包括我自己,都越来越频繁地提到一个词:“数字疲劳”。你有没有过这样的体验:明明只是想用手机查个资料,结…

2026/8/19 5:57:45 阅读更多 →
线性多智能体系统在不确定输入非线性下的鲁棒分布式次优控制

线性多智能体系统在不确定输入非线性下的鲁棒分布式次优控制

1. 项目背景与核心挑战:当线性智能体遇上不确定的非线性输入在分布式多智能体协同控制领域,我们常常追求一种理想化的“最优”状态,比如让一群无人机以最省电的方式编队飞行,或者让一组机器人以最短时间完成协同搬运。这类问题在理…

2026/8/19 5:56:44 阅读更多 →

日新闻

【单片机课程设计/毕业设计】基于 STM32 与 WiFi 模块的室内通风智能管控系统设计 基于 STM32 的人体存在感知自适应风扇控制系统设计(018503)

【单片机课程设计/毕业设计】基于 STM32 与 WiFi 模块的室内通风智能管控系统设计 基于 STM32 的人体存在感知自适应风扇控制系统设计(018503)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/8/19 0:00:30 阅读更多 →
AI如何驱动数学猜想生成:从大语言模型到自动化数学发现

AI如何驱动数学猜想生成:从大语言模型到自动化数学发现

1. 项目概述:当AI开始“猜”数学定理 最近在AI研究圈里,一个名为“Moonshine”的项目引起了不小的讨论。这名字本身就挺有意思,直译是“月光”,但在数学史上,它特指一个神秘而美丽的联系——魔群月光猜想,连…

2026/8/19 0:00:30 阅读更多 →
WarcraftHelper 魔兽争霸3优化实战指南

WarcraftHelper 魔兽争霸3优化实战指南

WarcraftHelper 魔兽争霸3优化实战指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 一台刚配的新电脑,跑《魔兽争霸3》却卡成 PPT——这…

2026/8/19 0:02:31 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/18 9:15:35 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 9:06:28 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/18 9:04:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/19 5:04:55 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/17 18:55:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/17 18:55:55 阅读更多 →