进入 SpringApplication.run() 方法
/**
* Static helper that can be used to run a {@link SpringApplication} from the
* specified source using default settings.
* @param primarySource the primary source to load
* @param args the application arguments (usually passed from a Java main method)
* @return the running {@link ApplicationContext}
*/
public static ConfigurableApplicationContext run(Class<?> primarySource, String... args) {
return run(new Class<?>[] { primarySource }, args);
}
静态注解类,用于去跑一个 SpringApplication 实例,这个实例是 primarySource 传入的,问号代表任意类型
数组通常来讲只要把 main 方法的参数传入即可
返回一个正在运行的上下文对象
进入 @SpringBootApplication 注解
@ComponentScan 当项目启动后会扫描 com.imooc 包下(Application.java 文件所在包)所有的类以及子包里的类
进入 @SpringBootConfiguration 注解
@Configuration 代表这是一个容器,类似 SpringMVC 中的 Bean
进入 @EnableAutoConfiguration 注解
AutoConfigurationImportSelector.class 用于导入自动装配的选择器
进入 AutoConfigurationImportSelector.class,选择需要导入的装配的类
进入 getAutoConfigurationEntry() 方法,这个方法是获取自动装配的类
进入 getCandidateConfigurations() 方法,在这里配置为空时进入断言
找到 Spring.factories 文件,这是 Spring Boot 自带的配置文件
进入 EmbeddedWebServerFactoryCustomizerAutoConfiguration 自动配置文件
在这里我们发现 Spring Boot 内置的 Tomcat
进入 Tomcat.class,全都是内置 Tomcat 配置
进入 WebMvcAutoConfiguration 配置
开启 Web MVC 模块,这里就是 Spring MVC,帮我们自动装配
进入 ServletWebServerFactoryAutoConfiguration 配置
web 服务器都是通过自动装配去运行的,启动项目的时候 Tomcat 随即启动
进入 @Import 注解,表示一个或者多个配置去导入(导入的是一个个容器)