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函数的语法如下…...

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基础--位带操作
位带简介 位操作就是可以单独的对一个比特位读和写,这个在 51 单片机中非常常见。51 单片机中通过关键字 sbit 来实现位定义,STM32 没有这样的关键字,而是通过访问位带别名区来实现。 在 STM32 中,有两个地方实现了位带ÿ…...

C# winform 重启电脑
一、重启电脑指令 windows7系统的启动文件夹为“开始菜单”——“所有程序”里面就有“启动”文件夹,其位置是 “C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup” 如果没有,则需要将其中的"administrator…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...

AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...

MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...

DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...