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.hqwc.cn/news/195743.html

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

相关文章

leetcode算法之分治-快排

目录 1.颜色分类2.排序数组3.数组中的第k个最大元素4.最小的k个数 1.颜色分类 颜色分类 class Solution { public:void sortColors(vector<int>& nums) {int n nums.size();int left -1,rightn,i0;while(i<right){if(nums[i] 0) swap(nums[left],nums[i]);e…

全新云开发工具箱:融合多项功能的微信小程序源码解决方案

全新云开发工具箱&#xff1a;融合多项功能的微信小程序源码解决方案 这款微信小程序源码提供了超过40个功能&#xff0c;集合了各种实用工具&#xff0c;成为一款全能工具箱。这些功能包括证件照制作、垃圾分类查询、个性签名制作、二维码生成、文字九宫格、手持弹幕、照片压…

2023.11.17 关于 Spring Boot 日志文件

目录 日志文件作用 常见的日志框架说明 门面模式 日志的使用 日志的级别 六种级别 日志级别的设置 日志的持久化 使用 Lombok 输出日志 实现原理 普通打印和日志的区别 日志文件作用 记录 错误日志 和 警告日志&#xff08;发现和定位问题&#xff09;记录 用户登录…

Django+Vue项目创建 跑通

参考链接&#xff1a; 【精选】DjangoVue项目构建_django vue-CSDN博客 一、背景 主要介绍如何使用后端Django 前端Vue 的技术栈快速地搭建起一套web项目的框架。 为什么使用Django和Vue? Django是Python体系下最成熟的web框架之一&#xff0c;由于Python语言的易用…

算法设计与分析【期中+期末复习知识点总结】(持续更新)

第1章&#xff1a;算法概述 算法&#xff1a;具有输入、输出、确定性、有限性。 程序&#xff08;算法数据结构程序&#xff09;&#xff1a;具有输入、输出、确定性&#xff08;注意&#xff1a;程序可以不满足有限性&#xff0c;如操作系统是在无限循环中执行的程序&#x…

文心一言 VS 讯飞星火 VS chatgpt (138)-- 算法导论11.4 2题

二、用go语言&#xff0c;试写出HASH-DELETE 的伪代码;修改 HASH-INSERT&#xff0c;使之能处理特殊值DELETED。 文心一言&#xff1a; 首先&#xff0c;让我们定义一个基本的哈希表数据结构。这个结构将包括一个存储键值对的哈希表和一个存储已删除键值对的队列。我们可以用…

基于SpringBoot的SSMP整合案例(在Linux中发布项目的注意事项与具体步骤步骤)

前言与注意 这几天在Linux中上线之前的小项目时&#xff0c;遇到了很多的问题&#xff0c;Linux镜像的选择&#xff0c;jdk&#xff0c; mysql在linux中的下载&#xff0c;使用finallshell连接linux&#xff0c;使用tomcat连接linux中的数据库........ 在下面的注意事项中我会将…

【好用的个人工具】搭建一款实用的个人IT工具箱——it-tools

【好用的个人工具】搭建一款实用的个人IT工具箱——it-tools 一、it-tools介绍二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载it-tools镜像五、部署it-tools工具箱5.1 创建…

使用ChatGPT进行数据分析案例——贷款数据分析

目录 数据数据 每一行是一个记录,代表着一笔贷款,每一列是一个特征,一共1万多条数据,最后一列非常重要save_loans是否成功收回

系列四、强引用、软引用、弱引用、虚引用分别是什么?

一、整体架构 二、强引用&#xff08;默认支持模式&#xff09; 2.1、概述 当内存不足时&#xff0c;JVM开始垃圾回收&#xff0c;对于强引用的对象&#xff0c;就算是出现了OOM也不会对该对象进行回收&#xff0c;死都不收。 强引用是我们最常见的普通对象引用&#xff0c;只…

华为模拟器dhcp实验

实验需求&#xff0c;pc1 pc2 pc3 获取到地址且能ping通&#xff0c;pc1 pc2 为地址池模式&#xff0c;pc3为接口模式 上配置 #sysname AR1# dhcp enable # interface GigabitEthernet0/0/0ip address 10.0.47.254 255.255.255.0 dhcp select relaydhcp relay server-ip 10.0…

在线随机字符串生成工具

具体请前往&#xff1a;在线随机字符串生成器--通过该工具生成动态复杂随机密码,随机字符串等&#xff0c;加密盐等