进入 SpringApplication.run() 方法

    1. /**
    2. * Static helper that can be used to run a {@link SpringApplication} from the
    3. * specified source using default settings.
    4. * @param primarySource the primary source to load
    5. * @param args the application arguments (usually passed from a Java main method)
    6. * @return the running {@link ApplicationContext}
    7. */
    8. public static ConfigurableApplicationContext run(Class<?> primarySource, String... args) {
    9. return run(new Class<?>[] { primarySource }, args);
    10. }

    静态注解类,用于去跑一个 SpringApplication 实例,这个实例是 primarySource 传入的,问号代表任意类型
    数组通常来讲只要把 main 方法的参数传入即可
    返回一个正在运行的上下文对象
    进入 @SpringBootApplication 注解
    image.png
    @ComponentScan 当项目启动后会扫描 com.imooc 包下(Application.java 文件所在包)所有的类以及子包里的类
    进入 @SpringBootConfiguration 注解
    image.png
    @Configuration 代表这是一个容器,类似 SpringMVC 中的 Bean
    进入 @EnableAutoConfiguration 注解
    image.png
    AutoConfigurationImportSelector.class 用于导入自动装配的选择器
    进入 AutoConfigurationImportSelector.class,选择需要导入的装配的类
    image.png
    进入 getAutoConfigurationEntry() 方法,这个方法是获取自动装配的类
    image.png
    进入 getCandidateConfigurations() 方法,在这里配置为空时进入断言
    image.png
    找到 Spring.factories 文件,这是 Spring Boot 自带的配置文件
    image.png
    进入 EmbeddedWebServerFactoryCustomizerAutoConfiguration 自动配置文件
    image.png
    在这里我们发现 Spring Boot 内置的 Tomcat
    image.png
    进入 Tomcat.class,全都是内置 Tomcat 配置
    image.png
    进入 WebMvcAutoConfiguration 配置
    image.png
    开启 Web MVC 模块,这里就是 Spring MVC,帮我们自动装配
    image.png
    进入 ServletWebServerFactoryAutoConfiguration 配置
    image.png
    web 服务器都是通过自动装配去运行的,启动项目的时候 Tomcat 随即启动
    image.png
    进入 @Import 注解,表示一个或者多个配置去导入(导入的是一个个容器)
    image.png