第一步:创建 SpringApplication|学习笔记

简介: 快速学习第一步:创建 SpringApplication

开发者学堂课程【SpringBoot快速掌握 - 核心技术第一步:创建SpringApplication】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/612/detail/9280


第一步:创建 SpringApplication


内容简介

一、Spring Boot 运行流程

二、Spring Boot 启动原理

三、Spring Boot 依赖导入

四、启动配置原理

 

一、Spring Boot运行流程

(1)创建SpringBootApplication对象

(2)运行main方法

//导入项目所需要的包

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;

Import org.springframework.boot.autoconfigure.SpringBootApplication;

//加入注解

@SpringBootApplication

@MapperScan("com.example.mapper")//扫描

public class NewdemoApplication {

public static void main(String[] args) {

//传入主方法和args

SpringApplication.run(NewdemoApplication.class, args);

}

}

1. Spring Boot启动流程

2. 创建SpringApplication对象

3. initialize(sources);

4. private void initialize(Object[] sources){

5. //保存主配置类

6. if (sources != null && sources.length >e){

7. this.sources.addAll(Arrays.aslist(sources));

8. //判断当前是否一个web应用

9. this.webEnvironment = deduceWebEnvironment();

10. //从类路径下找到META-INF/spring.factories配置的所有ApplicationContextInitializer;然后保存起来

11.setInitializers((Collection) getSpringFactoriesInstances(

12. ApplicationContextInitializer.class));

13. //从类路径下找到ETA-INF/spring.factories配置的所有ApplicationListener14. setlisteners((Collection) getSpringFactoriesInstances(ApplicationListener.class));

15. //从多个配置类中找到有main方法的主配置类

16. this.mainApplicationclass = deduceMainApplicationclass();

运行结果:

this.initializers = {ArrayList@1768) size =6

>0=(DelegatingApplicationContextinitializer@1770)

>1= {ContextldApplicationContextinitializer@1771)

>2={ConfigurationWarningsApplicationContextInitializer@1772)>3 ={ServerPortInfoApplicationContextlnitializer@1773)

>4=(SharedMetadataReaderFactoryContextlnitializer@1774)

>5=(AutoConfigurationReportLogginglnitializer@1775)

二、Spring Boot启动原理

SpringApplication.run(主程序类)

new SpringApplication(主程序类)

判断是否web应用

加载并保存所有

ApplicationContextlnitializer(META-INF/spring.factories)

加载并保存所有 ApplicationListener

获取到主程序类

- run(

回调所有的

SpringApplicationRunListener(MEA-INF/spring.factories)的starting

获取ApplicationArguments

准备环境&回调所有监听器( SpringApplicationRunListener)的environmentPrepared

打印banner信息

创建ioc容器对象(

- AnnotationConfigEmbeddedWebApplicationContext(web环境容器)

- AnnotationConfigApplicationContext(普通环境容器)

- run()

准备环境

-执行ApplicationContextlnitializer. initialize()

-监听器SpringApplicationRunListener回调contextPrepared

-加载主配置类定义信息

-监听器SpringApplicationRunListener回调contextLoaded

刷新启动IOC容器;

-扫描加载所有容器中的组件

-包括从META-INF/spring,factories中获取的所有EhableAutoConfiguration组件

回调容器中所有的ApplicationRunner、CommandLineRunner的run方法

监听器SpringApplicationRunListener回调finished

 

三、Spring Boot依赖导入

1. Maven导包

添加pom文件:

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<java.version>1.8</java.version>

</properties>

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</ dependency>

<dependency>

<groupId>org.springframework.boot</ groupId>

<artifactId>spring-boot-starter-test</ artifactId><scope>test</scope>

</ dependency>

 

四、启动配置原理

重要事件回调机制:

ApplicationContextInitializer

SpringApplicationRunListener

ApplicationRunner

CommandLineRunner

相关文章
|
6月前
|
消息中间件 XML Java
经验大分享:spring项目在启动的时候执行方法初始化
经验大分享:spring项目在启动的时候执行方法初始化
71 0
|
7月前
|
XML Java Maven
Spring框架学习 -- 创建与使用
Spring框架学习 -- 创建与使用
36 0
|
7月前
|
Java Spring
SPRINGBOOT启动原理(基于3.x版本)(三)- SpringApplication里有啥
SPRINGBOOT启动原理(基于3.x版本)(三)- SpringApplication里有啥
60 0
|
IDE Java Maven
SpringBoot一1(初次使用)+HelloWord
SpringBoot一1(初次使用)+HelloWord
46 0
|
XML Java 数据格式
SpringBoot主启动原理在SpringApplication类《第六课》
SpringBoot主启动原理在SpringApplication类《第六课》
105 0
|
Java Spring
SpringBoot启动原理——SpringApplication《课时十一》
SpringBoot启动原理——SpringApplication《课时十一》
94 0
|
Java Spring 容器
SpringBoot启动原理——Run方法源码解析《课时十二》
SpringBoot启动原理——Run方法源码解析《课时十二》
107 0
|
Java Spring
Spring5源码 - 14 如何在所有Bean创建完后做扩展?
Spring5源码 - 14 如何在所有Bean创建完后做扩展?
102 0
|
Java 容器 Spring
SpringBoot源码学习(二) 初始化环境,创建容器,初始化Failure Analyzers
## 前言 + 第一篇文章我们大概了解了springboot启动的时候主要做了这么几件事 + new了一个SpringApplication实例 + 判断当前spring运行的环境 + 加载META-INF/spring.factories 并初始化监听器 + SpringApplications实例.run + 获取并启动监听器 + 实例化Even
280 0
SpringBoot源码学习(二) 初始化环境,创建容器,初始化Failure Analyzers
|
Java 应用服务中间件 Spring
《SpringBoot启动流程四》:图文带你debug源码分析SpringApplication运行阶段和运行后阶段
《SpringBoot启动流程四》:图文带你debug源码分析SpringApplication运行阶段和运行后阶段
264 0
《SpringBoot启动流程四》:图文带你debug源码分析SpringApplication运行阶段和运行后阶段