Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?

news2024/9/22 19:46:21

目录

一、@SpringBootApplication

二、@SpringBootConfiguration

三、@EnableAutoConfiguration

四、@ComponentScan


 

一、@SpringBootApplication

@SpringBootApplication是Spring Boot框架的核心注解之一,它用于标识一个主配置类,通常是项目的入口类。该注解可以将Spring Boot应用程序自动配置和启动的相关注解整合在一起,简化了Spring Boot应用的开发。

@SpringBootApplication解包含了以下三个注解的功能:

  1. @Configuration:标注该类是一个配置类,可以使用@Bean注解来定义Bean。

  2. @EnableAutoConfiguration:启用Spring Boot的自动配置机制,让Spring Boot自动根据项目的依赖和配置来决定应用程序的配置。

. @ComponentScan:启用组件扫描,自动扫描并加载符合条件的组件,包括@Controller、@Service、@Repository等。

使用@SpringBootApplication注解,可以简化Spring Boot应用的配置,避免了繁琐的XML配置文件。通常情况下,我们只需要在项目的入类上添加@SpringBootApplication注解即可。

示例代码如下所示:

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

上述代码中,Application类使用@SpringBootApplication注解标注,并通过SpringApplication.run方法启动Spring Boot应用程序。

总结一下@SpringBootApplication的用法和作用:

  1. 用于标识Spring Boot应用程序的入口类。
  2. 整合了@Configuration、@EnableAutoConfiguration和@ComponentScan等注解的功能。
  3. 简化了Spring Boot应用的配置和启动过程。
  4. 可以通过SpringApplication.run方法启Spring Boot应用程序。

 

二、@SpringBootConfiguration

SpringBootConfiguration是Spring Boot框架中的一个注解,它用于标识一个类是Spring Boot的配置类。

在Spring Boot中,我们使用@Configuration注解来标识一个类是配置类,用于定义和配置Bean以及其他组件。而SpringBootConfiguration是@Configuration注解的派生注解,它在@Configuration注解的基础上添加了一些特定的功能。

SpringBootConfiguration的主要作用有以下几个方面:

  1. 标识配置类:使用@SpringBootConfiguration注解标识的类会被Spring Boot识别为配置类,Spring Boot会根据配置类的内容来进行相应的自动配置。

  2. 综合性注解:SpringBootConfiguration是一个综合性注解,它包含了@Configuration、@ComponentScan和@EnableAutoConfiguration等注解的功能。因此,使用@SpringBootConfiguration注解可以简化配置类的编写,减少重复的注解。

  3. 自动配置:在Spring Boot中,使用@SpringBootConfiguration注解的类通常会与@EnableAutoConfiguration注解一起使用,实现自动配置的功能。@EnableAutoConfiguration注解用于启用Spring Boot的自动配置机制,根据项目的依赖和配置自动进行相关的配置。

使用@SpringBootConfiguration注解的示例代码如下:

@SpringBootConfiguration
public class AppConfig {
    // 配置Bean和其他组件
}

上述代码中,AppConfig类使用@SpringBootConfiguration注解标识为配置类,通过在该类中定义Bean和其他组件的方式来进行配置。

总结一下@SpringBootConfiguration的用法和作用:

  1. 用于标识Spring Boot的配置类。
  2. 继承了@Configuration注解的功能,可以定义Bean和其他组件。
  3. 可以与@EnableAutoConfiguration注解一起使用,实现自动配置的功能。
  4. 简化了配置类的编写,减少了重复的注解。

 

三、@EnableAutoConfiguration

@EnableAutoConfiguration是Spring Boot框架中的一个重要注解,它用于启用Spring Boot的自动配置机制。当我们使用@EnableAutoConfiguration注解时,Spring Boot会根据项目的依赖和配置来自动配置和加载相应的Bean。

@EnableAutoConfiguration注解的主要作用如下:

  1. 自动配置:通过@EnableAutoConfiguration注解,Spring Boot会根据classpath中的依赖和项目中的配置来自动完成一系列的自动配置工作。它会根据约定和条件,自动加载和配置Spring Boot所需的各种Bean。

  2. 简化配置:使用@EnableAutoConfiguration注解可以大大简化Spring Boot应用的配置工作。Spring Boot会根据项目的依赖自动完成大部分配置,省去了繁琐的XML配置和手动配置的过程。

  3. 条件装配:@EnableAutoConfiguration注解会使用Spring Boot的条件注解机制来进行条件装配。它会根据项目的依赖和配置,判断是否满足条件来决定是否自动配置相关的Bean。

@EnableAutoConfiguration注解通常与@SpringBootApplication注解一起使用,@SpringBootApplication注解内部已经包含了@EnableAutoConfiguration注解。示例代码如下所示:

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

上述代码中,@SpringBootApplication注解标识了项目的入口类,内部已经包含了@EnableAutoConfiguration注解。

总结一下@EnableAutoConfiguration的用法和作用:

  1. 启用Spring Boot的自动配置机制。
  2. 自动根据项目的依赖和配置加载相应的Bean。
  3. 简化配置,省去大部分的XML配置和手动配置过程。
  4. 使用条件注解机制进行条件装配。

 

四、@ComponentScan

@ComponentScan是SpringBoot框架中的一个注解,用于启用组件扫描功能。它会自动扫描并加载符合条件的组件,包括@Controller、@Service、@Repository等。@ComponentScan注解的主要作用有以下几个方面:

1.组件扫描:@ComponentScan注解会扫描指定的包及其子包下的所有类,寻找带有@Component及其派生注解的类,并将其注册为Spring的Bean。这样,在其他地方就可以通过自动注入的方式将这些组件使用起来。

2.简化配置:使用@ComponentScan注解可以大大简化SpringBoot应用的配置工作。不再需要手动配置每个组件的Bean定义,而是可以通过自动扫描的方式自动加载所需的组件。

3.指定扫描路径:@ComponentScan注解可以通过basePackages或value属性指定要扫描的包路径。如果不指定,默认会扫描启动类所在的包及其子包下的所有类。

4.排除特定组件:@ComponentScan注解还可以通过excludeFilters属性排除指定的组件,不进行扫描和加载。可以使用FilterType枚举类型来指定排除的条件,如按照类、注解等进行排除。

示例代码如下所示:

@SpringBootApplication
@ComponentScan(basePackages = "com.example")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

上述代码中,@ComponentScan注解标识了项目的入口类,并通过basePackages属性指定要扫描的包路径为"com.example"。这样,SpringBoot会扫描该包及其子包下的所有类,并注册为Spring的Bean。

总结一下@ComponentScan的用法和作用:
1.启用组件扫描功能。
2.自动扫描并加载符合条件的组件,包括@Controller、@Service、@Repository等。
3.通过basePackages属性指定要扫描的包路径。
4.可以通过excludeFilters属性排除指定的组件。

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

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

相关文章

Titanic细节记录一

目录 chunker header index_col names Series与DataFrame的区别 df.columns del和drop的区别 reset_index loc与iloc的区别 不同的排序方式 sort_values sort_index DataFrame相加 describe函数查看数据基本信息 查看多个列的数据时使用列表 处理缺失值的几种思路 …

Adjusted frame length exceeds 1677216:16777318-discarded

问题背景 消息队列的nameser和broker运行后,在console无法显示,进入broker.log,namesrv.log 显示如下报错Adjusted frame length exceeds 1677216:16777318-discarded 问题原因 经定位,rocketmq底层集群间使用netty通信&#…

多语言海外购物商城APP系统(java开源)快速搭建

搭建一个多语言海外购物商城APP系统需要考虑以下几个方面:系统设计、技术架构、多语言支持和快速搭建。 一、系统设计: 1. 市场调研:了解海外购物市场的特点和需求,确定目标用户群体。 2. APP功能设计:根据市场需求&a…

【Axure高保真原型】JS版日期区间下拉选择器

今天和大家分享JS版日期区间下拉选择器的原型模板,该模板通过调用浏览器的下拉列表,所以可以获取真实的日历效果,具体包括哪一年二月份有29天,几号对应星期几,都是真实的。建议使用谷歌浏览器来演示,其他浏…

leetcode 399-除法求值

法一:并查集 分析示例1: a / b 2.0 a/ b 2.0 a/b2.0,说明 a 2 b a2b a2b, a a a和 b b b在同一个集合中 b / c 3.0 b/c3.0 b/c3.0,说明 b 3 c b3c b3c, b b b和 c c c在同一个集合中 求 a / c a/…

C++ Primer(第5版) 全书重点学习笔记

目录 第12章 动态内存 12.1 动态内存与智能指针 12.1.6 weak_ptr 12.2 动态数组 12.2.1 new和数组 12.2.2 allocator类 第12章 动态内存 12.1 动态内存与智能指针 12.1.6 weak_ptr weak_ptr是一种不控制所指向对象生存期的智能指针,它指向由一个shared_pt…

微信小程序申请步骤

微信公众平台链接:https://mp.weixin.qq.com/ 1、进到微信公众平台,点一下“点击注册”,挑选账号申请种类“小程序”,填好微信小程序用户信息,包含电子邮箱、登陆密码等。 2、微信公众平台会发送一封电子邮件&#xf…

监控Elasticsearch的关键指标

Elasticsearch 的核心职能就是对外提供搜索服务,所以搜索请求的吞吐和延迟是非常关键的,搜索是靠底层的索引实现的,所以索引的性能指标也非常关键,Elasticsearch 由一个或多个节点组成集群,集群自身是否健康也是需要我…

Linux网络服务之SSH

SSH 一、SSH概述1.1 定义1.2 SSH的优点1.3 OpenSSH1.3.1 定义1.3.2 SSH服务器-----sshd 二、SSH原理三、SSH登录方式3.1 方式一3.2 方式二3.3 方式三:跳板连接3.3.1 跳板连接概述3.3.2 具体配置 3.4 方式四:远程控制 四、服务端配置4.1 系统安全架构----…

企业内部wiki,让知识不再流于表面,让企业管理更加高效

企业内部wiki是一种基于wiki技术的内部知识管理平台,通常由企业自行搭建和维护,用于收集和整理企业内部的知识、经验和流程等信息。它可以帮助企业实现知识共享、协作和沟通,提高工作效率和团队协作能力。企业内部wiki还可以作为企业文化建设…

Python Pandas 使用示例

文章目录 使用Boolean 选择rows读取Excel表格里指定的sheet, 并跳过起始n行删除只有一个元素的行删除重复的合并多个csv文件到excel表格中获取csv文件的数据 使用Boolean 选择rows import pandas as pd# Sample DataFrame data {Name: [John, Alice, Bob, Emily],Age: [25, 3…

Segment Anything(SAM) 计算过程

给定输入图像 I ∈ R 3 H W I \in R^{3 \times H \times W} I∈R3HW。给定需要的prompts: M ∈ R 1 H W M \in R^{1 \times H \times W} M∈R1HW,代表图片的前背景信息。 P ∈ R N 2 P \in R^{N \times 2} P∈RN2,其中 N N N 是点的个数…

SpringBoot 底层机制分析【Tomcat 启动+Spring 容器初始化+Tomcat 如何关联Spring 容器】【下】

😀前言 本篇博文是关于SpringBoot 底层机制分析实现,希望能够帮助你更好的了解SpringBoot 😊 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大…

多年软件测试面试经验,给正在面试工作的一些建议

工作8年多,测试管理经验4年左右,电话面试现场面试了很多测试工程师候选人员,总结下面试过程中我经常会问到的问题和梳理下我的面试流程,希望对候选人员有所帮助。 1.自我介绍 自我介绍其实并不是我想了解除了简历之外的候选人的…

【王树森】深度强化学习(DRL)课程笔记:P2 价值学习

Value-Based RL 试图找出能预测最优action的Q*函数 Deep Q Network(DQN) Temporal Difference(TD) Learning Example 如果在只到半路DC能不能更新模型? TD在这种情况下也可以学习的原因 TD learning for DQN 使用TD Learning 训练 DQN Summary

oracle sql developer批量删除某个用户

随着navicate收费,还得破解,pl/sql developer配置麻烦,最近使用oracle sql developer来试试oracle的操作如何; 用着还行,没有卡顿现象, 最近要oracle sql developer批量删除某个用户下所有的表&#xff0…

springboot中消失的静态资源

springboot中消失的静态资源 问题:springboot项目中,resource/static 目录下的index.html以及template目录下 。实现WebMvcConfigurer这个接口,index.html就404了。 原因:实现了 WebMvcConfigurer 接口后,index.html …

网络安全的相关知识点

网络安全威胁类型: 1.窃听:广播式网络系统。 2.假冒 3.重放:重复一份报文或者报文的一部分,以便产生一个被授权的效果。 4.流量分析 5.数据完整性破坏 6.拒绝服务 7.资源的非授权使用 8.陷门和特洛伊木马:木马病毒有客…

Kali中AWD靶机环境搭建

Kali中AWD靶机环境搭建 1、kali安装docker2、克隆项目(400多M,下载会有点久)3、进入项目4、下载镜像5、改镜像名6、比赛环境搭建6.1 启动靶机6.2 连接裁判机,启动check脚本6.3 关闭环境命令 7、 靶机访问方式7.1 web界面访问7.2 s…

AMD 翻身无望,RX7000多款主流新卡出炉逗乐NVIDIA

看了今年 NVIDIA RTX 40 系中端主流级显卡,让咱明白了什么叫毫无诚意。 4060 核心规模不及 4090 的 19%、4060Ti 打不过 3070,可真是小刀划屁股开了眼。 奈何 AMD 这代 RX 7000 系显卡着实给不上压力。 旗舰 RX 7900 XTX、7900 XT 完全不敌 RTX 4090、…