SpringBoot-自动配置

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

你可能感兴趣的:(javaspringboot)