上一节我们提到过,认识一个新技术的时候,通常是从一个入门的HelloWorld开始,之后阅读它的一些入门文档和书籍、视频,从而掌握它的基本使用。
这一节我就来带大家从HelloWorld开始,先摸清楚SpringBoot的核心脉络,之后再来逐步分析透彻SpringBoot,从而精通它。
从搭建HelloWorld入口开始分析SpringBoot
首先我们从官方的文档中搭建出一个2.2.2 版本的SpringBoot,增加了两个starter,mybatis-plus-boot-starter、spring-boot-starter-web,使用Maven进行项目和依赖管理,配置一个本地的mysql。相信这个对你们来说,都比较简单,我就不一一进行赘述了。
经过上面的基本搭建,你就会有类似一个下面的一个SpringBoot HelloWorld级别 的入口。
package org.mfm.learn.springboot;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan("org.mfm.learn.springboot.mapper")
@SpringBootApplication
public class LearnSpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(LearnSpringBootApplication.class, args);
}
}
通过上一节你知道SpringBoot定义了一个SpringApplication的web应用启动流程,入口通过一个java -jar的命令,执行main函数启动一个JVM进程,运行内部的tomcat监听一个默认8080的端口,提供web服务。
整个过程中第一个最关键的就是SpringBoot定义的SpringApplication,我们一起先来看下它是怎么创建new的。
SpringApplication的创建时核心组件图
SpringApplication的创建时的代码分析
在上面的示例代码中,main方法执行了 SpringApplication的run方法,如下:
public static ConfigurableApplicationContext run(Class<?> primarySource, String... args) {
return run(new Class<?>[] { primarySource }, args);
}
public static ConfigurableApplicationContext run(Class<?>[] primarySources, String[]