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矢量图层文件的显示。通过设置引用的符号,改变矢量图层的显示效果;可编辑地图的符号库汇中的点符号、线符号、面符号…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...