SpringBoot常见注解

在这里插入图片描述

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉
🍎个人主页:Leo的博客
💞当前专栏:每天一个知识点
✨特色专栏: MySQL学习
🥭本文内容: SpringBoot常见注解
🖥️个人小站 :个人博客,欢迎大家访问
📚个人知识库: 知识库,欢迎大家访问

✨✨ 粉丝福利订阅✨✨

在这里插入图片描述

Leo哥收集了一些关于面试以及其他学习资源,这里分享给大家,各位卷王快收下吧!!!

1. @SpringBootApplication

image-20231119150635401

定义在main方法入口类处,用于启动sping boot应用项目

2. @SpringBootConfiguration

@SpringBootConfiguration注解是@Configuration注解的派生注解,用于标识一个类是Spring Boot应用的配置类。它通常用于定义配置信息、Bean的定义以及其他与应用配置相关的内容。

  1. 派生自@Configuration @SpringBootConfiguration注解是@Configuration注解的派生注解。这意味着使用@SpringBootConfiguration标注的类将被Spring容器识别为配置类,可以用来定义bean、配置属性等。
  2. 用于组织配置类: 在一个典型的Spring Boot应用中,你可能有多个配置类来组织不同部分的配置。使用@SpringBootConfiguration可以更清晰地表示这是一个SpringBoot的配置类。
  3. 自动扫描: Spring Boot应用通常使用@SpringBootApplication注解来启动应用程序,并该注解本身包含@SpringBootConfiguration。因此,@SpringBootConfiguration标注的配置类会被自动扫描并加载到Spring容器中。
  4. @Configuration的区别: 尽管@SpringBootConfiguration@Configuration功能相似,但@SpringBootConfiguration通常更适用于Spring Boot应用,而@Configuration则是通用的Spring注解。使用@SpringBootConfiguration可以更好地表达应用是一个Spring Boot应用。

下面是一个简单的例子,演示了@SpringBootConfiguration的使用:

image-20231119150826025

在这个例子中,MyConfiguration被标记为@SpringBootConfiguration,并定义了一个名为myBean的bean。这个配置类将被Spring Boot自动扫描,并将MyBean注入到应用上下文中。

3. @EnableAutoConfiguration

@EnableAutoConfiguration用于启用自动配置机制。在SpringBoot应用中,许多常见的配置任务都可以通过自动配置来完成,而不需要显式地进行手动配置。@EnableAutoConfiguration注解就是用来启用这种自动配置的。

让SpringBoot根据类路径中的jar包依赖当前项目进行自动配置

  1. 自动配置: Spring Boot的自动配置通过在类路径上查找特定的条件类来实现。@EnableAutoConfiguration注解告诉Spring Boot去自动配置项目的类路径上所需的beans。
  2. 条件化配置: 自动配置是条件化的,它只会在满足特定条件时才会应用。条件类(@Conditional注解的类)定义了这些条件。这使得自动配置可以根据项目的实际情况进行动态调整。
  3. 元注解: @EnableAutoConfiguration是一个元注解,它本身包含了@AutoConfigurationPackage@Import(AutoConfigurationImportSelector.class)等注解,用于导入自动配置的相关信息。
  4. 自动配置导入选择器: AutoConfigurationImportSelector是一个重要的类,它根据项目的依赖关系和条件类的情况,确定应该导入哪些自动配置类。这个类实现了ImportSelector接口。
  5. 禁用默认自动配置: 如果你想禁用某个特定的自动配置类,你可以使用exclude属性,例如:@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class}),这里禁用了数据源的自动配置。

在src/main/resources的META-INF/spring.factories

image-20231119150139206

简单例子:

image-20231119151158821

上面这个例子中,@EnableAutoConfiguration启用了SpringBoot的自动配置机制,而@ComponentScan用于扫描com.example包下的组件。SpringBoot将根据自动配置规则,自动配置项目所需的beans。

3.4 @ComponentScan

@ComponentScan告诉Spring在指定的包或类路径下查找并注册标有@Component及其派生注解(如@Service@Repository@Controller等)的类作为Spring容器的bean。

基本用法: @ComponentScan通常与@Configuration注解一起使用,以便在配置类中指定要扫描的基础包。例如:

image-20231119151900537

在上面的例子中,@ComponentScan指定了要扫描的基础包为com.example

指定多个包: 你可以通过basePackages属性指定多个包,也可以使用basePackageClasses属性指定一组类,Spring将扫描这些包或类路径下的组件。

image-20231119151934606

包含和排除过滤: 通过includeFiltersexcludeFilters属性,你可以进一步定义包含或排除特定条件的组件。例如,只包含带有@MyAnnotation注解的类:

image-20231119152014735

扫描默认规则: 如果不指定basePackages@ComponentScan将默认扫描被注解类所在的包及其子包。这通常足以满足大多数应用的需求。

image-20231119152038106

总结@ComponentScan的常用方式如下:

  • 自定扫描路径下边带有@Controller,@Service,@Repository,@Component注解加入spring容器
  • 通过includeFilters加入扫描路径下没有以上注解的类加入spring容器
  • 通过excludeFilters过滤出不用加入spring容器的类
  • 自定义增加了@Component注解的注解方式

4. @RequestMapping简化注解

  • @GetMapping 等同于 @RequestMapping(method = RequestMethod.GET)
  • @PostMapping 等同于 @RequestMapping(method = RequestMethod.POST)
  • @PutMapping 等同于 @RequestMapping(method = RequestMethod.PUT)
  • @DeleteMapping 等同于 @RequestMapping(method = RequestMethod.DELETE)
  • @PatchMapping 等同于 @RequestMapping(method = RequestMethod.PATCH)

5. @Profiles

@Profiles是Spring框架中用于定义和激活配置文件**(profiles)**的注解。Profiles允许在不同的环境中使用不同的配置,这在开发、测试和生产等不同阶段非常有用。

以下是关于@Profiles注解的详细解释:

1.定义Profiles: 使用@Profiles注解可以将一个bean或者一个配置类限制在特定的环境中。你可以为@Profiles注解指定一个或多个环境(profile)的名称。

@Component
@Profile("development")
public class DevelopmentDataSource implements DataSource {// Development environment specific configuration
}

在上面的例子中,DevelopmentDataSource bean 只会在激活了名为"development"的profile时被注册到Spring容器中。

2.激活Profiles: 有几种方式可以激活特定的profiles:

application.propertiesapplication.yml文件中使用spring.profiles.active属性:

spring.profiles.active=development

在启动应用程序时通过命令行参数:

java -jar your-application.jar --spring.profiles.active=development

在代码中通过ConfigurableEnvironment接口:

ConfigurableEnvironment environment = applicationContext.getEnvironment();
environment.setActiveProfiles("development");

3.默认Profiles: 你可以使用default关键字定义默认的profile。如果没有激活任何profile,那么默认profile中的bean将被注册到容器中。

@Component
@Profile("default")
public class DefaultDataSource implements DataSource {// Default configuration
}

4.组合Profiles: 通过使用逻辑运算符,你可以组合多个profiles。例如,要在同时激活"development"和"test"时注册一个bean:

@Component
@Profile({"development", "test"})
public class CombinedDataSource implements DataSource {// Combined configuration
}

@Profiles注解允许你在不同的环境中使用不同的配置,提高了应用程序的灵活性和可移植性。

6.总结

以上便是本文的全部内容,本人才疏学浅,文章有什么错误的地方,欢迎大佬们批评指正!我是Leo,一个在互联网行业的小白,立志成为更好的自己。

如果你想了解更多关于Leo,可以关注公众号-程序员Leo,后面文章会首先同步至公众号。

ToLeoJavaer公众号 (微信搜索程序员Leo)

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

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

相关文章

程序员告诉你:人工智能是什么?

随着科技的快速发展,人工智能这个词汇已经逐渐融入了我们的日常生活。然而,对于大多数人来说,人工智能仍然是一个相对模糊的概念。 首先,让我们从人工智能的定义开始。人工智能是一种模拟人类智能的技术,它涵盖了多个领…

flink入门

1.安装flink,启动flink 文档地址:Apache Flink 1.3-SNAPSHOT 中文文档: Apache Flink 中文文档 代码:GitHub - apache/flink: Apache Flink 2. 打开端口 端口号, 启动jar ### 切换到flink 目录bin下 [rootlocalhost ~]# cd /…

参考文献格式

目录 期刊会议预印本(如arxiv) 期刊 找不到页码可以在文献中查看bibtex格式,其中有 外文期刊可在web of science中查找卷号、期号和所在页数: [1] ZHANG F, HU Z Q, FU Y K, et al. A New Identification Method for Surface …

【0到1学习Unity脚本编程】第一人称视角的角色控制器

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:【0…

自动驾驶学习笔记(九)——车辆控制

#Apollo开发者# 学习课程的传送门如下,当您也准备学习自动驾驶时,可以和我一同前往: 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo Beta宣讲和线下沙龙》免费报名—>传送门 文章目录 前言 控制器设计 比例积分微分控制 线性…

Kotlin 知识体系

Kotlin 知识体系 1、Kotlin 文档2、Kotlin 基础3、桌面应用程序4、Android 与 iOS 应用程序 1、Kotlin 文档 Kotlin 是一门现代但已成熟的编程语言,旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作,并提供了多种方式在多个平台间复…

『亚马逊云科技产品测评』活动征文|借助AWS EC2搭建服务器群组运维系统Zabbix+spug

授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道。 本文基于以下软硬件工具: aws ec2 frp-0.52.3 zabbix 6…

LRU最近最少使用算法

LRU(LeastRecentlyUsed)“最近最少使用”算法: 1.当缓存空间已满耗用时,淘汰最近最少使用数据的缓存对象以释放更多的缓存空间(用于历史缓存对象的维护)。 2. 哈希表:快速查找缓存对象;双向链表:维护 历史数据所在的节点顺序。 步骤&#xff…

掌握深度学习利器——TensorFlow 2.x实战应用与进阶

掌握深度学习利器——TensorFlow 2.x实战应用与进阶 摘要:随着人工智能技术的飞速发展,深度学习已成为当下最热门的领域之一。作为深度学习领域的重要工具,TensorFlow 2.x 备受关注。本文将通过介绍TensorFlow 2.x的基本概念和特性&#xff…

在 Linux 上搭建 Java Web 项目环境(最简单的进行搭建)

要在 Linux 上安装的程序有 1.JDK (要想运行 java 程序 JDK 是必不可少的) 2.Tomcat (HTTP 服务器,是管理 Web 项目的常用工具) 3. mysql (数据库) 一.安装 JDK 博主使用的 Linux 发行版是 centos ,cen…

母婴服务预约小程序的效果如何

二胎家庭增速明显,占比较大,成为市场各母婴品牌的目标,而随着行业发展及市场变化,线上互联网深入人们生活,各家母婴品牌开始向“数字化”靠拢。 目前母婴门店商家主要面临服务/产品线上曝光不足、宣传度不够或扩圈无门…

git rebase 和 git merge的区别?以及你对它们的理解?

文章目录 前言是什么分析区别后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:git操作相关 🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出现错误,感谢…

【论文解读】FFHQ-UV:用于3D面部重建的归一化面部UV纹理数据集

【论文解读】FFHQ-UV 论文地址:https://arxiv.org/pdf/2211.13874.pdf 0. 摘要 我们提出了一个大规模的面部UV纹理数据集,其中包含超过50,000张高质量的纹理UV贴图,这些贴图具有均匀的照明、中性的表情和清洁的面部区域,这些都是…

基于深度学习的恶意软件检测

恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…

sqli-labs关卡18(基于http头部报错盲注)通关思路

文章目录 前言一、靶场通关需要了解的知识点1、什么是http请求头2、为什么http头部可以进行注入 二、靶场第十八关通关思路1、判断注入点2、爆数据库名3、爆数据库表4、爆数据库列5、爆数据库关键信息 总结 前言 此文章只用于学习和反思巩固sql注入知识,禁止用于做…

LV.12 D18 中断处理 学习笔记

一、ARM的异常处理机制及工程代码结构 1.1异常概念 处理器在正常执行程序的过程中可能会遇到一些不正常的事件发生 这时处理器就要将当前的程序暂停下来转而去处理这个异常的事件 异常事件处理完成之后再返回到被异常打断的点继续执行程序。 1.2异常处理机制 不同的处…

【Python】解析CPP类定义代码,获取UML类图信息

参考 & 鸣谢 CppHeaderParser - 官方文档Python解析C头文件win10直接获得文件绝对路径的方法总结 目的 解析CPP头文件中的类定义,获取UML中的属性。用于画UML类图。如下所示格式,图片来源-链接 即获取,类名,成员函数&#x…

H110主板搭配魔改QNCW升级小记

最近搬家完毕,翻出来一块闲置已久的qncw,隐约记得是买的主板套装,现在主板早已不知踪影,剩下孤零零一个CPU,一起翻出来一个G3900T亮机CPU,应该是同时代的产物。 qncw百度上一搜,发现参数还行&am…

【ES6标准入门】JavaScript中的模块Module语法的使用细节:export命令和imprt命令详细使用,超级详细!!!

😁 作者简介:一名大四的学生,致力学习前端开发技术 ⭐️个人主页:夜宵饽饽的主页 ❔ 系列专栏:JavaScript进阶指南 👐学习格言:成功不是终点,失败也并非末日,最重要的是继…

如何将vscode和Linux远程链接:

如何将vscode和Linux远程链接: Remote - SSH - 远程登录Linux 安装Remote - SSH 我们下载完后,就会出现这些图标 这里点一下号 查看一下我们的主机名,并复制 输入ssh 用户名主机名 这里是要将ssh这个文件要放在主机下的哪个路径下&#xff…