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 构建强大且可维护的应用程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/732513.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redux 与 Vuex:探索它们的设计思想及应用差异

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

力扣Python方法解析

1.两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按…

图像压缩神器:使用wxPython和Pillow快速压缩JPEG文件

导语: 在数字时代,我们经常处理大量的图像文件,无论是个人照片、网络图片还是工作中的设计素材。然而,随着图像数量的增多,存储和传输这些文件可能会成为一个挑战。幸运的是,我们可以利用Python编程和两个强…

【Git】项目源码迁移到另一个gitlab(保留原来提交历史记录)

目录 前情提要迁移方案IDEA远程仓库管理团队其他成员切换gitgit命令操作界面 前情提要 公司原来是自己私有部署的gitlab。有了研发云后就希望将代码推送到研发云的代码仓库上。这时候需要迁移并保留原来提交的历史记录。 迁移方案 登录新的gitlab(代码仓库)新建空白项目获取…

如何搭建selenium自动化测试框架?selenium自动化测试环境搭建(webdriver+Python框架)

一、安装Python 选择Python版本后,进入Python官方网站下载适配机型版本:http://www.python.org/ 二、安装setuptools和pip setuptools下载地址:https://pypi.python.org/pypi/setuptools pip下载地址:https://pypi.python.org/py…

突破编程_C++_设计模式(策略模式)

1 策略模式的概念 策略模式(Strategy Pattern)是 C 中常用的一种行为设计模式,它能在运行时改变对象的行为。在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式。 在策略模式中,需…

BUUCTF----[极客大挑战 2019]HardSQL

输入1’ 单引号闭合 进行永真式判断 竟然说我是臭弟弟----八嘎(肯定是进行了过滤) 经过手法判断,过滤了,空格,and等报错注入updatexml() 报错注入顾名思义就是,通过特殊函数错误使用并使其输出错误结果来获…

性能测试能力提升 —— 线程、并发、吞吐量、TPS、QPS、响应时间

一、背景 接着上一篇的知识:性能测试能力提升-关于性能测试,本篇文章,我们将主要介绍以下几方面的知识: 线程数&并发用户数相对并发&绝对并发吞吐量TPS&QPS响应时间 二、线程数、并发用户数 线程数: 主流的性能测…

Android Studio轮播图使用失败怎么办【已解决】

Android Studio轮播图使用失败怎么办 1.在gethub上面搜索轮播图 2.选择要使用的轮播图 3.查看该轮播图的配置方法 4.复制该依赖放入build.gradle中 5.重新构建 6.使用banner 发现没有报错了 7.参考网址 https://github.com/youth5201314/banner

解读BOT攻击,探索灵活高效的防护之道

回顾早期的互联网应用,由于业务流量比较小,往往单台服务器就能满足负载需求。随着互联网的流量越来越大,单服务器已经不能满足业务需求,无论它优化得再好,都较难承受大量的访问压力。支持负载均衡的技术很多&#xff0…

微信加好友频繁会被封号吗?

微信加好友频繁会被封号吗? 微信规定,每个人每天最多可以加20个好友,但一天之内如果频繁加好友,微信可能会出现异常提示,需要暂停好友添加操作。 面对微信上突如其来的大量好友申请,一定要谨慎处理,以免被…

新增流计算计数窗口,TDengine 3.2.3.0 八大板块功能更新

自发布以来,TDengine 3.0 版本在研发人员和社区用户的共同努力下不断优化,产品的稳定性和易用性获得了大幅提升,在知轮科技的智慧轮胎系统、黑格智能 3D 打印业务、韵达快递业务、中国地震台网中心、中移物联智慧出行场景等众多企业项目中获得…

前端面试练习24.3.5

webpack相关 项目使用webpack流程 进入一个初始化好的vue项目下载安装webpack相关依赖包/插件 npm install --save-dev webpack webpack-cli webpack-dev-server安装一些相关的loader,比如vue-loader,babel-loader,css-loader等创建webpack.config.js文…

【开源】SpringBoot框架开发教学资源共享平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课程资源模块2.4 课程作业模块2.5 课程评价模块 三、系统设计3.1 用例设计3.2 类图设计3.3 数据库设计3.3.1 课程档案表3.3.2 课程资源表3.3.3 课程作业表3.3.4 课程评价表 四、系统展…

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

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

蓝桥杯每日一题(哈希、单调队列)

2058 笨拙的手指 二进制所有的可能保存进哈希表&#xff0c;三进制找出所有的可能判断哈希表中是否有数字。 注意一种情况就是修改完之后出现前导零。直接continue; 学到了&#xff0c;某些条件的限制不一定要在循环条件上&#xff0c;可以直接在循环体内。 #include<bi…

运维:记一次寻找定时任务并删除的经历

前言 我相信接手别人的服务器、或者在没有任何文档的情况去看自己原先的服务器,都或多或少会遇到莫名其妙的服务器独有规则。 比如你服务本身跑的好好的,突然啪的一下,没了! 什么原因导致的呢?其中,很大可能是定时任务在作祟。 原因分析 本次,我遇到的问题是:在Ubuntu系…

一分钟了解遥感中卫星、传感器、波段及数据之间的关系

感是利用卫星、飞机或其他载具上的传感器对地球表面进行观测和测量的科学技术。以下是一些常见的遥感相关术语: 卫星(Satellite):在遥感中,卫星是指绕地球轨道运行的人造卫星,其主要任务是携带各种传感器从空间中对地球表面进行观测。 传感器(Sensor):传感器是安装在卫…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:ImageSpan)

Text组件的子组件&#xff0c;用于显示行内图片。 说明&#xff1a; 该组件从API Version 10开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 ImageSpan(value: ResourceStr | PixelMap) 参数&#xff1a; 参数名参数类…

抓包工具获取请求信息

Charles 下载安装 下载 官方下载地址&#xff1a;https://www.charlesproxy.com/latest-release/download.do 下载后傻瓜式安装就好&#xff0c;这个官方的需要激活&#xff0c;可以选择绿色版或者学习版 绿色版 绿色中文版&#xff1a;https://soft.kxdw.com/pc/Charles.z…