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

Spring Boot 注解教程

Spring Boot 注解教程

在 Spring 和 Spring Boot 的世界里,注解(Annotations)起着至关重要的作用。它们为开发者提供了声明式编程的能力,大大简化了 Spring 应用的开发过程。在这篇博客中,我们将探讨 Spring Boot 中的一些常用注解以及它们的用途。

1. @SpringBootApplication

这个注解是 Spring Boot 项目的基石,它整合了 @Configuration、@EnableAutoConfiguration 和 @ComponentScan 三个注解。在一个典型的 Spring Boot 主类中,你会看到 @SpringBootApplication 注解,它标志着这是 Spring Boot 应用的启动类。

2. @RestController

@RestController 是 @Controller 和 @ResponseBody 两个注解的组合。当你希望你的控制器类返回数据,而不是视图时,使用 @RestController 是非常方便的。这意味着你的方法将返回 JSON 或 XML,而不是解析为视图模板。

3. @RequestMapping

使用 @RequestMapping 注解,你可以映射 web 请求(如 GET、POST、PUT、DELETE 等)到具体的方法。在 Spring 4.3 之后,你还可以使用更具体的映射注解,如 @GetMapping、@PostMapping、@PutMapping 和 @DeleteMapping。

4. @PathVariable

当你希望在 URL 中传递参数时,@PathVariable 很有用。它将 URL 中的占位符映射到方法的参数上。

5. @RequestParam

这个注解用于获取查询参数。当你想要从 URL 的查询字符串中获取值时,可以将 @RequestParam 添加到你的方法参数上。

6. @Autowired

@Autowired 注解自动装配 Spring 容器中的 bean。你可以在构造函数、属性或方法上使用 @Autowired,Spring 将自动注入匹配的 bean。

7. @Service

@Service 是一个特殊的 @Component,它用于表示业务逻辑层类。将这个注解添加到一个类上,Spring 将自动将其识别为一个 bean,并将其添加到容器中。

8. @Repository

@Repository 用于表示数据访问对象(DAO)或用于与数据库交互的其他类。这个注解使 Spring 能够捕捉数据访问层的异常,并将它们转换为统一的 Spring 异常层次结构。

9. @Component

@Component 是一个通用注解,用于将类标记为 Spring 组件。被 @Component 注解的类会被 Spring 容器自动扫描并加入到容器中。除了 @Component 外,还有 @Service、@Repository 和 @Controller 等更具体的注解。

10. @Configuration

@Configuration 表示一个或多个 @Bean 方法的类可以被 Spring 容器扫描。这样,Spring 可以处理由这些 @Bean 方法生成的 bean,就像它们是使用 XML 配置的一样。这个注解通常与 @Bean 注解一起使用。

11. @Bean

在标有 @Configuration 的类中,@Bean 注解告诉 Spring 这个方法会返回一个对象,该对象应被注册为 Spring 应用上下文中的 bean。通常,@Bean 方法包含在实例化、配置和初始化新 bean 所需的任何逻辑。
当然,让我们继续深入讨论 Spring Boot 中的其他重要注解。

12. @Profile

@Profile 注解允许你根据当前的环境配置选择性地创建和配置 beans。例如,你可能有一组针对开发环境的 beans 和另一组针对生产环境的 beans。通过使用 @Profile,你可以确保只有在特定环境配置激活时才创建和配置相应的 beans。

13. @Qualifier

当有多个同类型的 bean 时,@Qualifier 注解可以帮助你消除自动装配时的歧义。你可以使用 @Qualifier 注解与特定的 bean 名称关联,以确保 Spring 注入正确的 bean 实例。

14. @Scope

@Scope 注解用于定义 bean 的作用域。Spring 支持多种作用域,包括单例(singleton)、原型(prototype)、请求(request)、会话(session)和全局会话(global session)。默认作用域是单例,这意味着在整个 Spring 容器中只创建一个 bean 实例。

15. @ComponentScan

@ComponentScan 注解用于指定 Spring 在哪些包中查找组件、配置和服务。你可以通过提供基包名称来定义扫描范围。如果不提供任何参数,则默认扫描当前包及其子包。

16. @EnableTransactionManagement

@EnableTransactionManagement 注解启用 Spring 的声明式事务管理功能。通常与 @Transactional 注解一起使用,后者用于标记需要进行事务管理的方法或类。

17. @Transactional

@Transactional 注解用于声明事务边界。你可以将此注解应用于类或方法级别,以指示 Spring 在执行相关操作时应启动、提交或回滚事务。此注解通常与 @EnableTransactionManagement 一起使用。

18. @Value

@Value 注解用于注入属性值到 Spring 组件中。你可以从属性文件、系统属性或直接在注解中定义的值中注入属性值。这对于外部化配置和自定义应用程序行为非常有用。

19. @ConfigurationProperties

@ConfigurationProperties 注解提供了一种方便的方式将外部配置属性(如 application.properties 或 application.yml 文件中的属性)绑定到 Java 对象中。这使得管理大量配置属性变得更加容易和整洁。

20. @Async

@Async 注解使方法异步执行。这意味着调用异步方法不会阻塞调用者线程,而是立即返回并在后台执行该方法。要使此注解生效,你还需要在配置类中启用异步支持(例如,通过 @EnableAsync)。

总结

Spring Boot 提供了丰富的注解集合,以简化 Spring 应用程序的开发和配置过程。这些注解涵盖了从基本组件扫描和自动装配到更高级的功能(如事务管理、异步执行和外部化配置)的各个方面。掌握这些注解将使你能够更有效地利用 Spring Boot 构建强大且可维护的应用程序。

相关文章:

Spring Boot 注解教程

Spring Boot 注解教程 在 Spring 和 Spring Boot 的世界里,注解(Annotations)起着至关重要的作用。它们为开发者提供了声明式编程的能力,大大简化了 Spring 应用的开发过程。在这篇博客中,我们将探讨 Spring Boot 中的…...

Day32-计算机基础2

Day32-计算机基础2 1. 什么是网络拓扑(Network Topology)?2. 网络拓扑3种经典模型2.1 网络拓扑结构-总线型2.2 网络拓扑结构-环形2.3 星型:2.4 网络拓扑结构总结 3.OSI网络模型概念*****3.1 OSI的概念:open system interconnect 开放系统互连…...

Stable Diffusion WebUI 中英文双语插件(sd-webui-bilingual-localization)并解决了不生效的情况

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 大家好,我是水滴~~ 本文介绍一款中英文对照插件 sd-webui-bilingual-localization,该插件可以让你的 Stable Diffusion WebUI 界面同时显示中文和英文,让我…...

AndroidStudio连不上adb报错ADB Connection Error

之前笔者一直通过AndroidStudio来看日志,也一直用的一套自己的SDK,用了好几年了。 但是突然有一天,AndroidStudio启动后就弹出警告窗:ADB Connection Error,如下: 在Event Log面板还持续性的输出&#x…...

Java程序员常用网站(推荐)

文章目录 一、下载网站1 Jdk下载2 清华大学开源软件镜像站2.1 Mysql下载 3 常见工具3.1 typora markdown文档编辑器3.2 Apifox 软件测试工具3.3 GIT3.4 Maven3.5 PDF转word3.6 office3.7 xmind 思维导图3.8 draw.io 画图 4 Java 技术书籍大全 PDF5 Java 8 编程思想中文版6 GitH…...

mq基础类设计

消息队列就是把阻塞队列这样的数据结构单独提取成一个程序独立进行部署。——>实现生产者消费者模型。 但是阻塞队列是在一个进程内部进行的; 消息队列是在进程与进程之间进行实现的, 解耦合:就是在分布式系统中,A服务器调用B…...

【Node.js从基础到高级运用】二、搭建开发环境

Node.js入门:搭建开发环境 在上一篇文章中,我们介绍了Node.js的基础概念。现在,我们将进入一个更实际的阶段——搭建Node.js的开发环境。这是每个Node.js开发者旅程中的第一步。接下来,我们将详细讨论如何安装Node.js和npm&#…...

kafka查看消息两种方式(命令行和软件)+另附发送消息方式

1、命令行方式 ①找到kafka安装文件夹 ②执行命令 #指定offset为指定时间作为消息起始位置 kafka-consumer-groups.sh \ --bootstrap-server 20.2.246.116:9092 \ --group group_1 \ --topic lanxin_qiao \ --reset-offsets \ --to-datetime 2023-07-19T01:00:00.000 \ -exe…...

设计模式 单例模式

单例模式就是在整个程序运行的过程中,这个类的实例化对象只有一个。 单例模式和private static 有密切的关系。 举一个例子: 一个wife,在法律允许的范围内,只能有一个。 public class Wife{private static Wife wife null; //…...

使用 Mendix 中的 OIDC 模块集成 Azure AD SSO

前言 在当今快速发展的数字化世界中,企业追求高效率和灵活性已成为常态。Mendix,作为一个先进的低代码开发平台,正是企业快速响应市场需求、加速数字化转型过程的利器。通过其直观的可视化开发环境,即使是非技术背景的用户也能设…...

day12_SpringCloud(Gateway,Nacos配置中心,Sentinel组件)

文章目录 1 Gateway组件1.1 Gateway简介1.2 Gateway入门1.3 网关路由流程图1.4 路由工厂1.5 过滤器1.5.1 过滤器简介1.5.2 内置过滤器1.5.3 路由过滤器1.5.4 默认过滤器1.5.5 全局过滤器1.5.6 过滤器执行顺序 2 Nacos配置中心2.1 统一配置管理2.2 Nacos入门2.2.1 Nacos中添加配…...

【基于springboot+Vue+Element ui的电影推荐之协同过滤算法简单实现】

基于springbootVueElement ui的电影推荐之协同过滤算法简单实现 1.基于用户的协同过滤算法的简单设计与实现1.1获取某个用户的评分矩阵1.2获取该用户与其他用户的相似度矩阵1.3获取两个用户之间的相似度并存储1.4返回推荐列表 2.基于物品的协同过滤算法的简单设计与实现2.1计算…...

签约仪式如何策划和安排流程?如何邀约媒体现场见证报道

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 签约仪式的策划和安排流程,以及邀约媒体现场见证报道,都是确保活动成功和提升影响力的关键环节。以下是一些建议: 签约仪式的策划和安排流程 明确目标…...

k8s-生产级的k8s高可用(1) 24

高可用集群 实验至少需要三个master(控制节点),一个可以使外部可以访问到master的load balancer(负载均衡)以及一个或多个外部节点worker(也要部署高可用)。 再克隆三台主机 清理并重启 配置两…...

python中lambda简介及用法

什么是lambda? lambda是python中的一个关键字,它用于创建匿名函数,也就是没有名字的函数。lambda函数通常用于一些简单的操作,比如作为参数传递给其他函数,或者作为返回值返回给调用者。lambda函数的语法如下&#xf…...

AI新工具 百分50%算力确达到了GPT-4水平;将音乐轨道中的人声、鼓声、贝斯等音源分离出来等

1: Pi 百分50%算力确达到了GPT-4水平 Pi 刚刚得到了巨大的升级!它现在由最新的 LLMInflection-2.5 提供支持,它在所有基准测试中都与 GPT-4 并驾齐驱,并且使用不到一半的计算来训练。 地址:https://pi.ai/ 2: Moseca 能将音乐…...

websocket前端应用

基本了解 首先要对websocket有一个基本了解:WebSocket是一种在Web浏览器和Web服务器之间创建持久连接的技术。它允许在客户端和服务器之间进行全双工通信,而不需要在每次通信时都发起新的HTTP请求。主要作用包括实时通信、减少延迟、减少宽带消…...

SpringMVC05、结果跳转方式

5、结果跳转方式 5.1、ModelAndView 设置ModelAndView对象 , 根据view的名称 , 和视图解析器跳到指定的页面 . 页面 : {视图解析器前缀} viewName {视图解析器后缀} <!-- 视图解析器 --> <bean class"org.springframework.web.servlet.view.InternalResourc…...

STM32基础--位带操作

位带简介 位操作就是可以单独的对一个比特位读和写&#xff0c;这个在 51 单片机中非常常见。51 单片机中通过关键字 sbit 来实现位定义&#xff0c;STM32 没有这样的关键字&#xff0c;而是通过访问位带别名区来实现。 在 STM32 中&#xff0c;有两个地方实现了位带&#xff…...

C# winform 重启电脑

一、重启电脑指令 windows7系统的启动文件夹为“开始菜单”——“所有程序”里面就有“启动”文件夹&#xff0c;其位置是 “C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup” 如果没有&#xff0c;则需要将其中的"administrator…...

Python进阶:从bytes到memoryview,解锁高性能数据处理实战

1. 为什么需要关注二进制数据处理&#xff1f; 如果你曾经处理过网络通信、图像处理或者大规模数据解析&#xff0c;一定会遇到这样的场景&#xff1a;字符串操作慢得像蜗牛&#xff0c;内存占用高得吓人。这时候就该二进制数据类型登场了。bytes和bytearray就像是Python中的&…...

别再死记硬背了!用‘网络拓扑’和‘交换技术’的故事,5分钟搞懂计算机网络核心概念

用‘拓扑家族’和‘快递员’的故事&#xff0c;5分钟解锁计算机网络核心逻辑 想象一下&#xff0c;如果计算机网络中的设备能开口说话&#xff0c;星形拓扑的中心交换机可能会抱怨&#xff1a;"每天处理这么多请求&#xff0c;我的CPU都要冒烟了&#xff01;"而总线拓…...

51单片机printf重定向避坑指南:为什么你的printf卡死了?

51单片机printf重定向避坑指南&#xff1a;为什么你的printf卡死了&#xff1f; 当你第一次在51单片机项目中使用printf函数时&#xff0c;可能会遇到一个令人困惑的现象&#xff1a;程序莫名其妙地卡死了&#xff0c;没有任何输出。这种情况在初学者中非常常见&#xff0c;而问…...

从零到一:基于UNet的DRIVE眼底血管分割实战解析

1. 项目背景与核心目标 眼底血管分割是医学影像分析中的经典任务&#xff0c;它能帮助医生快速定位视网膜血管病变区域。DRIVE数据集作为该领域的基准数据集&#xff0c;包含40张分辨率为565584的视网膜图像&#xff0c;其中20张用于训练&#xff0c;20张用于测试。这个项目最吸…...

底部固定U1,U2

混凝土细观压缩损伤模型ABAQUS&#xff0c;适合刚接触ABAQUS软件的初学者学习&#xff0c;包括模型文件与讲解视频 可以和文献一并发打开ABAQUS看着满屏的英文界面发懵&#xff1f;别慌&#xff0c;咱们今天用混凝土压缩损伤模型带你快速上手。这玩意儿虽然名字听着高大上&…...

如何5步掌握B站视频下载?BilibiliDown跨平台解决方案终极指南

如何5步掌握B站视频下载&#xff1f;BilibiliDown跨平台解决方案终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mi…...

WinUtil:5分钟掌握Windows系统管理工具的一键优化与软件批量安装

WinUtil&#xff1a;5分钟掌握Windows系统管理工具的一键优化与软件批量安装 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil 还在为Windows系…...

2048游戏AI通关秘籍:手把手教你用Minimax算法实现自动游戏(Python版)

2048游戏AI通关秘籍&#xff1a;用Minimax算法打造智能玩家&#xff08;Python实战&#xff09; 每次打开2048游戏&#xff0c;看着那些数字方块在棋盘上滑动合并&#xff0c;你是否好奇过——如果让程序自己玩这个游戏&#xff0c;它能达到什么水平&#xff1f;今天我们就用P…...

COMSOL声学建模实战:从散射场分析到声子晶体能带计算

1. 散射场分析&#xff1a;从声呐案例理解声波与物体的相互作用 第一次接触COMSOL声学模块时&#xff0c;最让我困惑的就是"散射场"这个概念。直到做了声呐的案例&#xff0c;才真正明白它的物理意义。想象一下&#xff0c;你站在湖边大喊&#xff0c;声音碰到对岸的…...

别再只学协议了!从AVB到TSN:梳理车载以太网确定性演进的完整脉络与核心挑战

从AVB到TSN&#xff1a;车载以太网确定性技术的演进逻辑与工程实践 当一辆自动驾驶汽车在高速公路上以120km/h行驶时&#xff0c;制动指令的10毫秒延迟意味着车辆会多行进33厘米——这个距离可能决定一次避障的成败。正是这种严苛的实时性要求&#xff0c;推动着车载网络从&quo…...