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矢量图层文件的显示。通过设置引用的符号,改变矢量图层的显示效果;可编辑地图的符号库汇中的点符号、线符号、面符号…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...