本系列文章为【狂神说 Java 】视频的课堂笔记,若有需要可配套视频学习。
1.1 pom.xml
(1) 父工程( spring-boot-starter-parent )
 
- 核心依赖,静态资源过滤等配置。
- 编写或导入 springboot 依赖时不需要指定版本号,继承父工程版本。
(2) 启动器( spring-boot-starter )
 
-  springboot 的启动场景,功能场景。 
-  添加某功能对应的启动器依赖即可使用此功能。 
-  springboot 的依赖前缀 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency>
1.2 主程序
@SpringBootApplication
public class HelloApplication {public static void main(String[] args) {SpringApplication.run(HelloApplication.class, args);}
}
1.2.1 注解( @SpringBootApplication )
 
-  @SpringBootConfiguration:SpringBoot 配置类
-  @EnableAutoConfiguration:自动装配-  自动装配流程 -  springboot 启动时从 spring.factories 获取目标类(组件)的全限定名,将其添加到容器。  
 
-  
-  配置仓库 - spring.factories 中的所有配置类含 @ConditionalOnxxx注解,只有满足此注解的所有条件,此配置才会生效。
  
- spring.factories 中的所有配置类含 
 
-  
-  结论 - springboot 的自动配置是在启动时扫描并加载的。
- 导入对应的启动器( starter),自动装配就会生效。
 
1.2.2 main 方法
(1) SpringApplication 类
 
-  判断此应用是普通 Java 项目还是 Web 项目。 
-  查找并加载所有可用的初始化器,设置到 initializers 中。 
-  查找所有应用程序监听器,设置到 listeners 中。 
-  推断并设置 main 方法的定义类,找到主类。 
-  查看类构造器。 /*** 创建一个新的 SpringApplication 实例,用于加载应用程序上下文,该实例可以在调用 run 方法* 前自定义。* @param resourceLoader 资源加载器* @param primarySources bean 源* @see #run(Class, String[])* @see #setSources(Set)*/ @SuppressWarnings({ "unchecked", "rawtypes" }) public SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) {this.resourceLoader = resourceLoader;Assert.notNull(primarySources, "PrimarySources must not be null");this.primarySources = new LinkedHashSet<>(Arrays.asList(primarySources));this.webApplicationType = WebApplicationType.deduceFromClasspath();this.bootstrapRegistryInitializers = getBootstrapRegistryInitializersFromSpringFactories();setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class));setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class));this.mainApplicationClass = deduceMainApplicationClass(); }
(2) run() 方法
 
-  启动应用监听器、获取装配环境参数等。 
-  执行流程 