@SpringBootApplication:在启动类上定义的注解,是一个复合注解,主要由@SpringBootConfiguration、@EnableAutoConfiguration、@ComponmentScan这三个注解组成
1.@SpringBootConfiguration注解和@Configuration注解无异,作用:指示一个类声明一个或多个@Bean方法,并且可以由Spring容器处理
2.@ComponmentScan注解作用:配置扫描的包路径
3.@EnableAutoConfiguration是一个复合注解包括
@AutoConfigurationPackage和@import(AutoConfigurationimportSelector.class)
扩展:@import注解的作用就是导入其它JAVA Config配置类到当前类当中
- @AutoConfigurationPackage的作用:扫描的包路径保存到全局变量,便于查询。AutoConfigurationimportSelector类当中有一个selecimports方法,该方法返回字符数组,数组里面存放的是类的全路径。
那么字符串数组的从哪里来的呢?
meta-IF/spring.factories文件当中来的,spring.factories是key-value的结构,自动装配的key为EnableAutoConfiguration。sprin spi机制提供的API将字符串数组当中的类全路径通过反射加载进IOC容器当中。
说完注解:配合starter说一下整体流程
每一个starter都会提供一个@Configuration+@Bean的配置类
(比如ssm整合mybatis是不是要什么
然后配置类的一个全路径会在spring.factories当中保存(注册),注册了之后
spring spi机制中的API会配合@import(AutoConfigurationimportSelector.class) 这个注解引入的AutoConfigurationimportSelector类当中的selecimports方法,
通过反射,Class.forName(“类全路径”),将这些bean加载进IOC容器当中



