Spring(8) Springboot自动配置原理

这篇具有很好参考价值的文章主要介绍了Spring(8) Springboot自动配置原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.简介

Springboot 的自动配置原理,是Springboot中最高频的一道面试题,也是Springboot框架最核心的思想。

首先我们看一张我总结的自动配置原理概览图:

Spring(8) Springboot自动配置原理,Spring,spring boot,spring,java
下面,我们就根据这张图详细描述一下具体过程:

2.@SpringBootApplication 注解

首先,我们来看一段代码:

@SpringBootApplication
public class SpringbootDemoApplication {

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

上面就是一段普通的 Springboot 引导类代码,这里有一个非常关键的注解 @SpringBootApplication,其实 Springboot 的自动配置主要就是依赖这个注解,这个注解还包含了另外三个注解:

3.三大注解

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
		@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {}
  • @SpringBootConfiguration:该注解与 @Configuration 注解作用相同,用来声明当前也是一个配置类。
  • @EnableAutoConfiguration:SpringBoot 实现自动化配置的 核心注解
  • @ComponentScan:组件扫描,默认扫描当前引导类所在包及其子包。

接下来我们就主要看一下 @EnableAutoConfiguration 注解:

4.@EnableAutoConfiguration 注解

@EnableAutoConfiguration 注解的部分源码如下:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {}

其中核心的代码为 @Import 注解中指定的 AutoConfigurationImportSelector.class 类。

@Import 注解的作用是导入某些类,然后注入到 Spring 容器中。

AutoConfigurationImportSelector.class 类是我们需要自动导入的自动配置的选择器。

这里还会去加载 spring.factories 配置文件,将文件中的类都注入到 Spring 容器中。

Spring(8) Springboot自动配置原理,Spring,spring boot,spring,java

Spring(8) Springboot自动配置原理,Spring,spring boot,spring,java

5.spring.factories

Spring(8) Springboot自动配置原理,Spring,spring boot,spring,java

spring.factories 文件内容大致如下,其中很多类是以 AutoConfiguration 结尾的:

(注意:这里面的类并不是会全部注入到容器中的,会根据 @ConditionalOnClass 注解值选择性注入)

Spring(8) Springboot自动配置原理,Spring,spring boot,spring,java

比如我们打开其中的 RedisAutoConfiguration 类:

6.示例:RedisAutoConfiguration 类

Spring(8) Springboot自动配置原理,Spring,spring boot,spring,java

  • @Configuration:标识当前类为配置类。
  • @ConditionalOnClass:判断是否有对应的字节码,字节码存在时才将当前Bean注入到容器中。
  • @EnableConfigurationProperties:用于启用 @ConfigurationProperties 注解的自动绑定功能,可以获取配置文件中的属性值。
  • @Bean:用于将方法的返回值 Bean 注入到 Spring 容器中。
  • @ConditionalOnMissingBean:判断环境中是否不存在对应的Bean,如果不存在则创建当前 Bean 并注入到 Spring 容器中。
  • @ConditionalOnSingleCandidate:用于标识只有在容器中存在单个候选Bean时才创建按当前Bean 并注入到 Spring 容器中。

整理完毕,完结撒花~ 🌻文章来源地址https://www.toymoban.com/news/detail-520737.html

到了这里,关于Spring(8) Springboot自动配置原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot中的Elasticsearch自动配置:原理与使用

    在Spring Boot中,Elasticsearch是非常流行的搜索引擎。为了方便开发人员使用Elasticsearch,Spring Boot提供了Elasticsearch自动配置功能。本文将介绍Elasticsearch自动配置的原理与使用。 Elasticsearch自动配置是Spring Boot对Elasticsearch进行封装的一种方式,它主要是通过将Elasticsearch相关的配置

    2024年02月12日
    浏览(51)
  • Spring Boot中RabbitMQ自动配置的介绍、原理和使用

    RabbitMQ是一种高性能的消息队列系统,它支持多种消息协议和丰富的功能,如消息路由、消息确认、消息重试、死信队列等。在Spring Boot中,我们可以通过自动配置的方式来使用RabbitMQ。本文将介绍Spring Boot中RabbitMQ自动配置的介绍、原理和使用方法。 在Spring Boot中,我们可以通

    2024年02月11日
    浏览(59)
  • 1024程序员节特辑:【Spring Boot自动配置原理揭秘】

    主页传送门:📀 传送   Spring Boot 是一个用于创建独立的、生产级别的 Spring 应用程序的框架。它极大地简化了 Spring 应用程序的开发过程,其中一个关键的功能就是自动配置(Auto-Configuration)。   自动配置可以根据项目需求自动配置各种服务和组件,它可以帮助开发者

    2024年02月08日
    浏览(66)
  • Spring(8) Springboot自动配置原理

    Springboot 的自动配置原理,是Springboot中最高频的一道面试题,也是Springboot框架最核心的思想。 首先我们看一张我总结的自动配置原理概览图: 下面,我们就根据这张图详细描述一下具体过程: 首先,我们来看一段代码: 上面就是一段普通的 Springboot 引导类代码,这里有一

    2024年02月12日
    浏览(41)
  • Java 框架面试题-Spring Boot自定义配置与自动配置共存

    Spring Boot 是一个快速开发框架,可以简化 Spring 应用程序的开发,其中自定义配置是其中一个非常重要的特性。 在 Spring Boot 中,自定义配置允许开发者以自己的方式来配置应用程序。自定义配置可以用于覆盖默认配置,也可以用于添加新的配置项。本文将详细介绍 java框架面

    2023年04月11日
    浏览(51)
  • Spring Boot 自动装配原理

    Java面试题目录 Spring Boot自动装配原理   Spring Boot启动类上的 @SpringBootApplication 注解中包含 @EnableAutoConfiguration 注解,表示开启自动装配。在@EnableAutoConfiguration注解中使用@Import注解引入 AutoConfigurationImportSelector 组件,此类中通过 SpringFactoriesLoader.loadFactoryNames() 方法来扫描所有

    2024年01月25日
    浏览(40)
  • spring boot的自动装配原理

    作者: 逍遥Sean 简介:一个主修Java的Web网站游戏服务器后端开发者 主页:https://blog.csdn.net/Ureliable 觉得博主文章不错的话,可以三连支持一下~ 如有需要我的支持,请私信或评论留言! Spring Boot是一个开源的Java框架,可以帮助开发者快速构建基于Spring的应用程序。Spring Boo

    2024年02月10日
    浏览(39)
  • Spring Boot自动装配原理(易懂)

    熟练使用Spring Boot那么自动装配原理的掌握是必不可少的 Spring Boot的自动装配实际上是从 META-INF/spring.factories 文件中获取到对应的需要进行自动装配的类,并生成相应的Bean对象,然后将它们交给Spring容器进行管理 启动类的@SpringBootAppliation注解是一个组合注解,由以下3个注解组

    2024年02月16日
    浏览(41)
  • Spring Boot源码解析 - 自动装配原理

    Spring Boot 自动装配是 Spring Boot 框架的一个关键特性,它的目标是让开发者能够快速构建 Spring 应用程序,减少繁琐的配置工作。   @SpringApplication 从启动类 @SpringApplication 注解入手, @SpringBootApplication 是一个组合注解,它是 Spring Boot 框架中常用的一个主要注解之一。它结合了

    2024年01月19日
    浏览(42)
  • Spring Boot中自动装配机制的原理

    1 .自动装配,简单来说就是自动把第三方组件的Bean装载到Spring IOC容器里面 ,不需要开发人员再去写Bean的装配配置, 2.在Spring Boot应用里面,只需要在启动类加上 @SpringBootApplication 注解就可以实现自动装配。 3.@SpringBootApplication是一个复合注解, 真正实现自动装配的注解是@

    2024年02月10日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包