zoukankan      html  css  js  c++  java
  • 带着萌新看springboot源码11(springboot启动原理 源码上)

      通过前面这么多讲解,springboot原理应该也大概有个轮廓了,一些基本的配置,从客户端url到controller(配置一些要用的组件,servlet三大组件,处理器映射器,拦截器,视图解析器这些都说过了),然后通过Dao和数据库打交道(配置数据源、Druid监控都说了,其实我后面要写的就是springboot和mybatis、springdata jpa的整合运用了),顺便还说了一下spring中ioc容器的创建原理。

      今天就来一点更好玩的东西,大家还记得最开始的那个主配置类吧(就是有main方法的那个)。对了,ioc容器创建还有不了解的出门左转,可以看我前面几次写的文章。

      温馨提醒:这次原理涉及到ioc容器创建原理以及监听器原理,我会跳过,因为前几篇说过了,只说springboot有关的;而且不会使用调试的小伙伴要先学会调试哦~

      随便创建一个springboot应用(要包括web模块)

      首先,我们就在这里打个断点

      调试,run方法里面可以看到还是啥事没做,继续调用run方法,step into进入

      可以看到,先根据主配置类创建一个spring应用(SpringApplication),然后调用run方法

      

      我们看看是怎么创建spring应用的

      

      那我们来看看这两个类似的方法做了一些什么

      

      是累路径下所有的jar包下的META-INF/spring.factories文件,我只是举个例子,还有很多个这样的xxxInitializer

      同理,那两个类似的的方法下面一个,就是加载所有类路径下META-INF/spring.factories,键为ApplicationListener的所有类,然后保存起来。

      到这里。spring应用就创建出来了,无非是加载所有的ApplicationContextInitializer对应的xxxInitializer   和  ApplicationRunListener对应的监听器,都保存起来

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------

      下面就开始运行run方法,看run方法里面是怎么运行的

      主要来看看这七个步骤是干了什么

    第一步

      

      拿到所有监听器,创建对象,然后保存起来,再看第一步的start()方法,有关监听器的原理在我的spring ioc原理我就说了(这里的所有监听器,在之前已经加载好了,都存起来了)

    第二步

      

      后面的就是监听器的原理了,都一样(贴一下监听器接口里面的方法)

    第三步(创建ioc容器)

      

    第四步

      每个具体的xxxApplicationContextInitializer类的initialize()方法都不一样,可以自己去看看,估计肯定是设置一些参数,往ioc容器里导入一些组件

    第五步(刷新容器,具体的我之前spring ioc源码那里详细的讲解了,这里就略过)

      记住哦,这里的获取ioc容器由于在上面已经创建过了,所以会直接从上面获取的

      先到这里,下一节继续说一下后面一点内容

  • 相关阅读:
    Java实现 蓝桥杯 算法提高 小X的购物计划
    Java实现 蓝桥杯 算法提高 小X的购物计划
    Java实现 第十一届 蓝桥杯 (高职专科组)省内模拟赛
    Java实现 第十一届 蓝桥杯 (高职专科组)省内模拟赛
    Java实现 第十一届 蓝桥杯 (高职专科组)省内模拟赛
    Java 第十一届 蓝桥杯 省模拟赛 小明的城堡
    Java 第十一届 蓝桥杯 省模拟赛 小明的城堡
    Java 第十一届 蓝桥杯 省模拟赛 小明的城堡
    129. Sum Root to Leaf Numbers
    117. Populating Next Right Pointers in Each Node II
  • 原文地址:https://www.cnblogs.com/wyq1995/p/10002485.html
Copyright © 2011-2022 走看看