springboot的主启动类springbootApplication

类中有一个注解@SpringbooApplicaiton

这个注解中又蕴含@CompentScan,负责扫描xml配置的bean,将其退出到ioc容器中

@SpringbootConfiguration示意是一个SpringBoot的配置类

他上面又有两个注解@Configuration和@Component
@Configuration示意这是一个配置类,配置类对应Spring的xml配置文件
@Component是示意这是一个组件bean

回到之前与@SpringbootConfiguration同级的@EnableAutoConfiguration注解

作用是开启主动配置性能

她上面有个@AutoConfigurationPackageb,主动配置包
@import Spring的底层组件,给容器中导入一个组件

@Import({Register.class})给容器导入组件
这个Register是具体的,实际上是AutoConfigurationImportSelector-主动配置导入选择器

进入代码,办法getCandidateConfigurations(参数a,参数b),返回的就是最开始看的启动主动导入配置文件的注解类EnableAutoConfiguration

下面的办法其实调用了SpringFactoriesLoader的静态方法loadFactoryNames()办法

这个办法又调用了loadSpringFactories办法

这个类读取了resoures文件下的MATA-INF中的spring.factories文件中的内容

这就是主动配置本源所在

主动配置原理
依据不同的条件决定配置类是否失效
失效就向容器中增加各种组件

组件的属性从对应的properties类中获取
配置文件能配置什么就能够参照某个性能对应的这个属性类