美文网首页
spring boot介绍及启动流程分析

spring boot介绍及启动流程分析

作者: 浪_fa63 | 来源:发表于2020-02-23 19:55 被阅读0次

    SpringBoot 简介

    SpringBoot 是一个快速开发的框架, 封装了Maven常用依赖、能够快速的整合第三方框架;简化XML配置,全部采用注解形式,内置Tomcat、Jetty、Undertow,帮助开发者能够实现快速开发,SpringBoot的Web组件 默认集成的是SpringMVC框架。
    SpringBoot原理介绍:

    1. 能够帮助开发者实现快速整合第三方框架 (原理:Maven依赖封装)
    2. 去除xml配置 完全采用注解化 (原理:Spring体系中内置注解方式)
    3. 无需外部Tomcat、内部实现服务器(原理:Java语言支持创建Tomcat服务器)

    SpringBoot和SpringCloud区别

    SpringCloud依赖与SpringBoot组件,使用SpringMVC编写Http协议接口,同时SpringCloud是一套完整的微服务解决框架。

    SpringBoot启动流程

    核心分在两个步骤:

    1. 创建SpringApplication对象
    2. 调用SpringApplication run实现启动同时返回当前的容器上下语言

    分析流程:

    1. 创建 SpringApplication对象 SpringBoot容器初始化操作

    2. 获取当前应用启动类型 原理: 判断当前classpath是否有加载我们的servlet类,返回servlet web启动方式
      webApplicationType 分类三种类型:

      1. 响应式启动 (Spring5 新特性)
      2. None 不会嵌入web容器启动(将 SpringBoot项目放入外部服务器运行)
      3. servlet 基于web容器启动
    3. setInitializers 读取SpringBoot包下面的META-INF/spring.factories获取到对应的ApplicationContextInitializer 装配到集合中。

    4. setListeners 读取SpringBoot包下面的META-INF/spring.factories获取到对应的
      ApplicationListener 装配到集合中

    5. mainApplicationClass获取当前运行的主函数

    6. 调用 SpringApplication run 方法实现启动

    7. StopWatch 记录启动时间

    8. getRunListeners(args) 读取我们的META-INF/spring.factories

    9. listeners.starting() 循环调用监听starting方法

    10. ConfigurableEnvironment environment = prepareEnvironment(listeners,
      applicationArguments);
      listeners.environmentPrepared(environment)加载配置文件到SpringBoot容器中

    11. Banner printedBanner = printBanner(environment); 打印我们SpringBoot Banner

    12. 创建SpringBoot上下文AnnotationConfigServletWebServerApplicationContext对象

    13. refreshContext(context) 刷新我们上下文

    14. 开始创建tomcat容器

    15. 开始加载SpringMVC

    16. afterRefresh 定义一个空的模版给其他子类实现重写

    17. listeners.started(context) 使用广播和回调机制通知监听器SpringBoot容器启动成功

    18. listeners.running(context) 继续使用广播和回调机制通知监听器SpringBoot容器启动成功running

    本文参考蚂蚁课堂:http://www.mayikt.com/#

    相关文章

      网友评论

          本文标题:spring boot介绍及启动流程分析

          本文链接:https://www.haomeiwen.com/subject/fbhsqhtx.html