当前位置: 首页 > news >正文

springboot、spring、springmvc有哪些注解

Spring Boot 常用注解

虽然Spring Boot本身并没有引入大量新的注解,但它基于Spring框架,并整合了多种技术和库,使得开发者可以更方便地使用Spring框架的功能。在Spring Boot项目中,常用的注解主要来自于Spring框架本身。
‌@SpringBootApplication‌:标注一个主程序类,表明这是一个Spring Boot应用程序的入口。它是@Configuration、@EnableAutoConfiguration和@ComponentScan的组合注解‌。
‌@EnableAutoConfiguration‌:启用Spring Boot的自动配置机制,根据项目中的依赖和应用上下文自动配置Spring应用程序‌。
‌@ComponentScan‌:自动扫描指定包及其子包中的Spring组件‌。

Spring 常用注解

核心注解
@Component:一个通用的注解,任何Spring组件都可以使用,表示一个Spring管理的Bean。
@Service:表示业务逻辑组件,增强了代码的可读性,表明这个类是业务逻辑层的一部分。
@Repository:专门用于持久层,它不仅具有@Component的功能,还支持数据库异常的转换。
@Controller:专用于Spring MVC控制器,用于处理Web请求。
@Autowired:自动注入依赖,可以用于构造函数、字段或setter方法。
@Qualifier:当有多个Bean可以注入时,使用@Qualifier指定要注入的具体Bean。
@Value:用于注入配置文件中的属性值,常用于注入简单的属性,如字符串、数值。
@Configuration:标记为配置类,通常用于定义一个或多个@Bean。被标记的类通常替代XML配置文件。
@Bean:定义一个Bean的方法,该方法的返回值将被注册为Spring容器中的Bean。通常用于配置第三方库或复杂的实例化逻辑。
@Import:用于导入其他配置类或组件到Spring容器中。
@ImportSelector:返回需要导入的组件的全类名数组。
@ImportBeanDefinitionRegistrar:手动注册Bean到容器中。
@Primary:当存在多个同类型的Bean时,指定一个默认的Bean进行注入。
@Profile:指定组件在哪个环境的情况下才能被注册到容器中。
@Conditional:通过实现Condition接口,并重写matches方法,从而决定该Bean是否被实例化。
AOP(面向切面编程)相关注解
@Aspect:声明一个切面。
@After:在方法执行之后执行。
@Before:在方法执行之前执行。
@Around:在方法执行之前与之后执行。
@PointCut:声明切点。
Java配置类相关注解
@ComponentScan:用于对@Component进行扫描。
异步与定时任务相关注解
@EnableAsync:配置类中通过此注解开启对异步任务的支持。
@Async:在实际执行的Bean方法使用该注解来声明其是一个异步任务。
@EnableScheduling:在配置类上使用,开启计划任务的支持。
@Scheduled:来申明这是一个任务,包括cron、fixDelay、fixRate等类型。
测试相关注解
@RunWith:运行器,Spring中通常用于对JUnit的支持。
@ContextConfiguration:用来加载配置配置文件。
Spring事务注解
@Transactional:用于声明事务管理。

Spring MVC 常用注解

控制器相关注解
@Controller:用于标识一个控制器类。
@RestController:是@Controller和@ResponseBody的组合,用于创建RESTful Web Services。
请求映射注解
@RequestMapping:通用的映射注解,可以处理任何类型的HTTP请求。可与method属性搭配使用来限定请求类型。
@GetMapping、@PostMapping、@PutMapping、@DeleteMapping:这些是@RequestMapping的特化版本,分别处理GET、POST、PUT、DELETE请求,使代码更加简洁和具备语义性。
请求参数处理注解
@PathVariable:用于从URL中提取路径参数,适用于RESTful URL结构。
@RequestParam:用于从查询参数中提取请求参数,通常用于表单提交或GET请求的查询字符串。
@RequestBody:将请求体内容绑定到方法参数,通常用于处理JSON或XML格式的请求体。
@ResponseBody:将方法的返回值作为响应体返回,通常用于返回JSON或XML数据。
@ModelAttribute:用于将请求参数与模型对象进行绑定。
@CookieValue:用于将Cookie与控制器方法的参数进行绑定。
@RequestHeader:用于将HTTP请求头与控制器方法的参数进行绑定。
@RequestAttribute:由请求方法、过滤器或拦截器创建或预先存在于request作用域中的属性,将该属性传到方法的参数上。
@SessionAttribute:由请求方法、过滤器或拦截器创建或预先存在于session作用域中的属性,将该属性传到方法的参数上。
@SessionAttributes:只能用于类上,无法用于方法上,用于有选择地指定Model中的那些属性转存到HttpSession对象当中。
@MatrixVariable:此注解扩展了URL请求地址的功能,可以接收多个变量,用“;”(分号)分隔,可以用于多条件查询。
跨域处理注解
@CrossOrigin:用于处理Spring MVC中的跨域请求问题。
全局异常处理与数据预处理注解
@ControllerAdvice:全局异常处理、全局数据绑定、全局数据预处理。
@ExceptionHandler:用于全局处理控制器里的异常。
@InitBinder:用来设置WebDataBinder,WebDataBinder用来自动绑定前台请求参数到Model中。
响应状态注解
@ResponseStatus:用于设置HTTP响应状态码。
REST控制器增强注解
@RestControllerAdvice:用于增强REST控制器的功能,提供全局的异常处理和数据绑定等。
这些注解极大地简化了Spring Boot、Spring和Spring MVC应用程序的开发过程,使开发者能够快速构建出功能强大且易于维护的应用程序。在实际开发中,选择合适的注解不仅能提高代码的可读性,还能确保代码的灵活性和可维护性。

相关文章:

springboot、spring、springmvc有哪些注解

Spring Boot 常用注解 虽然Spring Boot本身并没有引入大量新的注解,但它基于Spring框架,并整合了多种技术和库,使得开发者可以更方便地使用Spring框架的功能。在Spring Boot项目中,常用的注解主要来自于Spring框架本身。 ‌Sprin…...

Apache Commons ThreadUtils 的使用与优化

Apache Commons ThreadUtils 的使用与优化 1. 问题背景 在 Java 系统中,跨系统接口调用通常需要高并发支持,尤其是线程池的合理配置至关重要。如果线程池使用不当,可能导致性能下降,线程等待或过载。 当前问题 使用了 Apache …...

重温设计模式--5、职责链模式

文章目录 职责链模式的详细介绍C 代码示例C示例代码2 职责链模式的详细介绍 定义与概念 职责链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它旨在将请求的发送者和多个接收者解耦,让多个对象都有机会处理请求&am…...

下午四点半

客户的员工竟然背着公司开发报表系统,是在密谋什么大事吗? 之前去线下给客户的员工培训,当时我就对这个小姑娘印象很深刻,因为她后面加了我们的技术人员,问了很多问题,不同于从来没有用过低代码平台的人&a…...

嵌入式单片机中Flash存储器控制与实现

第一:嵌入式单片机内部Flash概述 1.存储器的概念 存储器指的是若干个存储单元的集合,每个存储单元都可以存储若干个二进制数,为了方便的操作存储单元,就为每个存储单元都分配了地址,就可以通过寻址来访问存储单元。由于计算机的处理的数据量较大,并且运算速度都很快,就…...

loki failed to flush

loki 报错 levelerror ts2024-12-27T08:13:10.450140686Z callerflush.go:143 org_idfake msg"failed to flush" err"failed to flush chunks: store put chunk: open /data/loki/chunks/ZmFrZS85ODBmM2U3NzliODg2MjY1OjE5M2VhNDVkYTc4OjE5M2VhNDVlNDdkOjVmMjA…...

微信小程序打印生产环境日志

微信小程序打印生产环境日志 新建一个log.js文件,写入以下代码: let log wx.getRealtimeLogManager ? wx.getRealtimeLogManager() : nullmodule.exports {debug() {if (!log) returnlog.debug.apply(log, arguments)},info() {if (!log) returnlog.i…...

利用 deepin-IDE 的 AI 能力,我实现了文件加密扩展

经过多轮迭代,deepin 文件管理器(dde-file-manager)的扩展功能已经趋于稳定,看到越来越丰富的文管新功能,作为一名技术爱好者,也想自己动手写个插件扩展一下文管的功能。 我选择的开发工具是 deepin-IDE&a…...

JPA 基本查询(五)

JPA 查询Exists示例 JPA教程 - JPA 查询Exists示例 如果子查询返回任何行,则EXISTS条件返回true。 以下代码显示如何在JPQL中使用带有子查询的EXISTS运算符。 List l em.createQuery("SELECT e FROM Professor e WHERE EXISTS " "(SELECT p FROM …...

hiprint结合vue2项目实现静默打印详细使用步骤

代码地址是:vue-plugin-hiprint: hiprint for Vue2/Vue3 ⚡打印、打印设计、可视化设计器、报表设计、元素编辑、可视化打印编辑 本地安装包地址:electron-hiprint 发行版 - Gitee.com 1、先安装hipint安装包在本地 2、项目运行npm(socket.…...

项目报 OutOfMemoryError 、GC overhead limit exceeded 问题排查以及解决思路实战

项目报 OutOfMemoryError、GC overhead limit exceeded 问题排查以及解决思路实战 前言: 问题现象描述: 1,生产环境有个定时任务,没有初始化告警数据【告警数据量为1000多个】 2,其他定时任务执行正常 3,查…...

【计算机-显示屏灰阶测试】

硬计算机-显示屏灰阶测试 ■ 对比度■ 清晰度■ 灰度色阶(色带)■ 对比率■■ ■ 对比度 在一个性能良好的显示器上,您可观察到每种颜色的标尺都可分为从 1 至 32、大致上等宽但不同亮度的色带。即使是在刻度1处的色带也应该隐约可见。 一个…...

CSS系列(40)-- Container Queries详解

前端技术探索系列:CSS Container Queries详解 📦 致读者:探索组件响应式的艺术 👋 前端开发者们, 今天我们将深入探讨 CSS Container Queries,这个强大的组件级响应式特性。 基础概念 🚀 容…...

工作生活做事慢效率低原因及解决方案

时间和效率管理具体版(初阶)(一) 工作&生活做事慢效率低原因及解决方案 一、效率慢的原因(动物解析法(编者自创)) 打败你的可能是生活的小事 1.无头苍蝇无流程 做事之前没有想…...

各种数据库类型介绍

在软件开发和数据处理领域,数据库扮演着至关重要的角色。它们用于存储、检索和管理大量数据,是信息系统不可或缺的基础。以下是几种常用的数据库类型及其简要介绍: 1.关系型数据库(Relational Databases) 关系型数据库…...

了解智能运维

智能运维 (一)运维工作的转变 随着技术发展,运维工作从基础的搬机器、插网线、装系统等体力活儿,逐渐转变为更侧重服务器管理、代码管理、日志分析、监控告警、流量管理及故障排查等的脑力劳动。如今,运维人员拿到的…...

js实现仿windows文件名称排序

引言: 在JavaScript中,数组排序是一个常见的操作,但默认的Array.sort()方法只能进行简单的字符串比较。在处理复杂数据时,我们需要自定义排序函数来满足特定的需求。本文将通过一个具体的代码示例,解释如何实现一个仿w…...

基于Oauth2的SSO单点登录---前端

Vue-element-admin 是一个基于 Vue.js 和 Element UI 的后台管理系统框架,提供了丰富的组件和功能,可以帮助开发者快速搭建现代化的后台管理系统。 一、基本知识 (一)Vue-element-admin 的主要文件和目录 vue-element-admin/ |--…...

springboot 使用注解设置缓存时效

springboot 使用注解设置缓存时效 import org.apache.commons.lang3.StringUtils; import org.springframework.data.redis.cache.RedisCache; import org.springframework.data.redis.cache.RedisCacheConfiguration; import org.springframework.data.redis.cache.RedisCach…...

QGIS二次开发(地图符号库操作)

实习三 地图符号库操作 3.1 任务要求 基于QGIS,实现地图符号的设计/存储与显示;基于QGIS实现一个点、线、面shp矢量图层文件的显示。通过设置引用的符号,改变矢量图层的显示效果;可编辑地图的符号库汇中的点符号、线符号、面符号…...

ESC固件底层开发:寄存器级驱动与无传感器换相实现

1. ESC固件底层技术解析:电子调速器固件架构与驱动实现电子调速器(Electronic Speed Controller, ESC)是无人机、电动航模、机器人驱动系统中的核心执行单元,其本质是一个高动态响应的三相逆变器控制器。ESC固件并非简单的PWM输出…...

AD09 PCB设计核心技巧与实战经验

1. PCB设计基础与AD09平台概述作为一名从业超过十年的硬件工程师,我使用过从Protel 99到Altium Designer 21的各种版本,其中AD09(Altium Designer 2009)因其稳定性和适中的硬件要求,至今仍是许多工程师的首选工具。PCB…...

基于Cadence 617的带隙基准电压源设计:从理论推导到仿真验证

1. 带隙基准电压源设计基础 第一次接触带隙基准电压源设计时,我被这个看似简单的电路难住了。基准电压源就像电子系统中的"定海神针",无论温度如何变化,它都能提供稳定的参考电压。在模拟IC设计中,带隙基准(Bandgap Ref…...

个人------完成主页,个人花园,相册页面的前端代码编写

最近一段时间,我专注于个人花园博客系统的前端开发工作,从基础页面搭建到交互逻辑实现,逐步完成了多个核心模块的开发,虽然目前尚未连接后端,但前端页面的视觉呈现和基础交互已全部落地。本次开发主要围绕个人主页、相…...

智能体设计模式详解 B# 附录E:命令行中的 AI 智能体

【全景】基于双向协同的能力融合设计 Agent设计模式 V1:基于双向协同的能力融合设计 39种设计模式分层清单 A#0 智能体设计模式全景(上):大模型如何“思考”?(认知视角导论) Agent Design Pattern Catalogue: A Collection of Architectural Patterns for Foundation Mo…...

2026从APEC到进博会,标杆展览设计公司的成功密码

一、品牌用户的真实困境:当展览成为品牌突围的关键战场在信息碎片化的时代,线下展览已成为品牌与用户建立深度连接、展示核心实力、抢占心智的关键战场。然而,一场成功的展览背后,是无数细节的精密运转与强大执行力的支撑。品牌方…...

Facebook Instant Game变现全攻略:如何通过广告和内购让你的HTML5游戏赚钱

Facebook Instant Game变现全攻略:如何通过广告和内购让你的HTML5游戏赚钱 在HTML5游戏开发领域,Facebook Instant Game已经成为不可忽视的平台。这个无需下载、即点即玩的游戏生态系统,为开发者提供了独特的变现机会。不同于传统应用商店30%…...

Win11Debloat:让Windows系统重获新生的一站式自动化优化方案

Win11Debloat:让Windows系统重获新生的一站式自动化优化方案 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter …...

Vue3+TS+Vite项目实战:5分钟搞定Mock数据接入(附完整代码)

Vue3TSVite项目实战:5分钟实现动态权限Mock系统 最近在重构后台管理系统时,遇到一个典型痛点:前端页面都开发完了,后端接口还在设计中。这种前后端进度不匹配的情况,相信每个前端开发者都深有体会。今天分享的这套Mock…...

OpenSSL实战指南:在VSCode中搭建C语言开发环境

1. 为什么要在VSCode中配置OpenSSL开发环境 OpenSSL作为业界广泛使用的加密工具库,几乎支撑着互联网安全通信的半壁江山。从HTTPS协议到数字证书验证,从数据加密到安全传输,OpenSSL的身影无处不在。对于C语言开发者来说,掌握OpenS…...