• SpringBoot自动配置


    启动流程

    我们先来了解SpringBoot的启动流程(简化版)

    SpringApplication.run(..)

            1.创建IOC容器createApplicationContext(..)

            2.加载源配置类loadSourceClass(..)

    原配置类:通常是main方法所在的类,而且会被注解@SpringBootApplication所修饰,我们又称之为主类

            3.加载并处理所有的配置类processConfigurationClasses(..)

                    SpringBoot会自动找到所有的配置类,然后加载和处理他们。“自动装配”就属于其中的一环

            4.实例化所有的单例Bean:instantiateSingletonBeans(..) 

                    实例化所有的单例Bean。“依赖注入”和“自动装配”就属于其中的环节

            5.将这些类注入到Spring IOC容器中

    自动配置:

    1.SpringApplication.run(..)

    2.注册“源配置类”

            加载处理“源配置类”

            处理注解@ComponentScan

            处理注解@Import

                    在类AutoConfigurationImportSelector中加载处理“自动配置类”

                    1.通过SpringFactories机制加载配置文件

                            通过ClassLoader去获取classpath中的配置文件META-INF/spring.factories

                    2.找出所有的自动配置类

                            在所有的配置文件META-INF/spring.factories中,筛选出以EnableAutoConfiguration.class为key的、符合条件的配置类

                    3.根据注解@Conditional过滤掉不必要的自动配置类            

                            注解@Conditional,是来自Spring框架的一个注解

                            它的作用是实现:只有在特定条件满足时,才会向IOC容器注册指定的组件。

                            我们可以将@Conditional理解为某种IF语句     

    注解@Conditional

     @Conditional,是来自Spring框架的一个注解

             它的作用是实现:只有在特定条件满足时,才会向IOC容器注册指定的组件。

              我们可以将@Conditional理解为某种IF语句               

                    完成自动配置

    3.递归加载和处理所有的配置

    注解@ComponentScan是来自Spring框架的一个注解:

            他的作用是对指定的package进行扫描,找到其中符合条件的类,默认是搜索被注解@Component修饰的配置类

            通过属性basePackagesbasePackageClasses,来指定要进行扫描的package

            如果未指定package,则默认扫描当前@ComponentScan所修饰的类所在的package

            

  • 相关阅读:
    7-3 打怪升级 单源最短路
    Ventus(承影):基于RISC V的开源GPGPU
    RCLane: Relay Chain Prediction for LaneDetection
    HDL-Bits 刷题记录 04
    R语言使用colSums函数和is.na函数统计dataframe数据中每个数据列中包含的缺失值的个数
    LeetCode高频题42. 接雨水
    【机器学习合集】激活函数合集 ->(个人学习记录笔记)
    Python毕业设计源代码竞赛比赛平台
    技术分享| 基于RTM 实现的呼叫邀请如何添加推送功能?
    【Oculus Interaction SDK】(十二)Meta Quest 如何开启透视(Passthrough)
  • 原文地址:https://blog.csdn.net/qq_59102081/article/details/126956015