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,一经查实,立即删除!

相关文章

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

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

C++中将 sizeof() 用于类

C中将 sizeof() 用于类 您知道,通过使用关键字 class 声明自定义类型,可封装数据属性和使用数据的方法。运算符 sizeof( )用于确定指定类型需要多少内存,单位为字节。这个运算符也可用于类,在这种情况下,它将指出类声…

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 …

python 词云 wordcloud使用paddle模式 庆余年人物分析--不是特别准,可以看着玩一玩

看完之后你也可以生成自己的词云 提供一个过滤人名的英中词性分析对应,更多的可以去我的码云上看看 https://gitee.com/billion_lines_of_code/learn-wordcloud # 只过滤人名 En2Cn_name {nr: 名词-人名,nr1: 名词-汉语姓氏,nr2: 名词-汉语名字,nrf: 名词-音译人…

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

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

图像滤波处理

滤波处理是图像处理中常用的技术之一,用于去除图像中的噪声、平滑图像、边缘检测等。以下是几种常见的滤波处理方法: 1. 均值滤波 (Mean Filtering) 原理: 均值滤波使用一个固定大小的滤波器,在图像上滑动并取周围像素的平均值来…

ClickHouse SQL 查询优化

1 单表查询 1.1 Prewhere替代where Prewhere和where语句的作用相同,用来过滤数据。不同之处在于prewhere只支持 *MergeTree 族系列引擎的表,首先会读取指定的列数据,来判断数据过滤,等待数据过滤之后再读取select 声明的列字段来补…

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

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

在 Linux 环境下的简单调试技巧

在 Linux 环境下的简单调试技巧 GDB(GNU调试器)是一个强大的命令行调试工具,用于调试C、C等程序。下面是使用GDB的一些基本步骤: 编译程序时包含调试信息 确保在编译程序时使用 -g 选项来包含调试信息。例如: gcc -g …

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…

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

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

【Kingbase FlySync】命令模式:安装部署同步软件,实现KES到KES实现同步

【Kingbase FlySync】命令模式:安装部署同步软件,实现KES到KES实现同步迁移 概述准备环境目标资源1.测试虚拟机下载地址包含node1,node22.同步工具下载地址3.临时授权下载地址4.ruby工具下载地址5.EXAMv0.11.sql下载地址 实操:同步软件安装部署1.node1准…

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贴图,这些贴图具有均匀的照明、中性的表情和清洁的面部区域,这些都是…

mybatis动态sql语法

<?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace"com.qvfan.mybatistest.mapper.Emp…