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类中获取
配置文件能配置什么就能够参照某个性能对应的这个属性类