当我们在pom.xml里引入了web的起步依赖,就可以直接使用SpringMVC框架了。在这个过程中,Springboot究竟帮我们做了什么事情呢?这一切都要从引导类开始。
SpringApplication.run方法
这个方法的主要作用是:引导创建一个ApplicationContext容器对象,创建容器后会把运行的引导类注册到容器中,读取引导类上的注解
@SpringBootApplication
这是一个组合注解,它实际上引入了多个注解,其中我们主要关注:
-
@SpringBootConfiguraion
:加这个注解的类是Springboot的配置类 -
@EnableAutoConfigutation
:启用Springboot的自动配置 -
@ComponentScan
:开启组件扫描。如果不指定扫描的包,会扫描引导类所在的包
我们知道,@Import
可以导入一个ImportSelector
类,它会把类里selectImports
方法返回的类名称,注册到IoC容器中。而AutoConfigurationImportSelector
,是把所有符合条件的@Configuration
配置类注册到容器里。
AutoConfigurationImportSelector源码
经过追踪,selectImports方法里最终调用到了SpringFactoriesLoader
的loadFactoryNames
方法