本文从主配置类开始着重看一下三个注解
@SpringBootConfiguration @EnableAutoConfiguration @ComponentScan
首先创建一个springboot项目,进入到主启动配置类
进入@SpringBootApplication
进来之后发现这里边就是我们今天重点关注的三个注解
1、@SpringBootConfiguration
进入注解发现有个@Configuration注解,意思就是这是个springboot配置类(类似于xml文件)可以向容器中注入组件
2、@ComponentScan
注解用于Configuration类的组件扫描之类,也就是要扫哪些包
可以自定义basePackages(指定扫描的包),basePackageClasses(指定扫描的类)
如果不指定默认扫描标有该注解类的包及子包扫描(这个地方就是主配置类所在包为basePackages),所以我们写项目的时候发现没有配置扫哪,但注解也被扫进去了
3、@EnableAutoConfiguration
注解用于启动自动导入配置
@AutoConfigurationPackage
用于自动装配使用该注解的类所在包以及子包的组件扫描到spring容器中,也就是配置主类(@SpringBootApplication)所在包以及子包
@Import({AutoConfigurationImportSelector.class})
自动配置类的选择器,导入一些依赖的环境需要的组件,就不需要我们手动配置了
selectImports-->getAutoConfigurationEntry-->getCandidateConfigurations-->loadFactoryNames-->loadSpringFactories
一层层追下去发现
加载了所有引用包下的这个文件
将这里边的类通过反射加载到容器中,用它们来做自动配置