SpringBoot——run启动流程

这里写图片描述

SpringBoot_run()启动流程

  1. SpringApplication实例初始化:
    a)、根据classpath里面是否存在特征类(org.springframework.web.context.ConfigurableWebApplicationCobtext)来决定创建为web应用使用ApplicationContext类型,还是标准Standalone应用使用的ApplicationContext类型。
    b)、使用SpringFactoriesLoader在classpath中查找并加载所有可用的ApplicationContextInitiazier
    c)、使用SpringFactoriesLoader在classpath中查找并加载所有可用的ApplicationListener
    d)、推断并main方法的定义类

  2. SpringApplication实例初始化完成,遍历SpringFactoriesLoader可以找到并加载的SpringApplicationRunListnner,调用他们的start()方法。

  3. 创建并配置当前SpringBoot应用将要使用的Envrioment(包括配置要使用的PropertySource以及Profile)

  4. 遍历调用所有SpringApplicationRunListener的environmentPrepared()的方法——即通知【run监听器SpringBoot应用的使用环境已经搭建完成】

  5. 创建对应类型的ApplicationContext,根据条件决定是否添加ShutdownHook,决定是否使用自定义的BeanNameGenerator、ResourceLoader。将之前准备好的Enviroment设置给创建好的ApplicationContext使用

  6. 完成创建ApplicationContext,通过SpringFactoriesLoader查找并加载classpath中所有可用的ApplicationContextInitializer的Initialize()方法来对ApplicationContext进行进一步的处理

  7. 遍历所有的SpringApplicationRunListenner的contextPrepared()方法,通知【run监听器】ApplicationContext已经准备好了。

  8. 将之前通过@EnableAutoConfiguration获取的所有配置以及其他形式的IOC容器配置加载到已经准备完毕的ApplicationContext

  9. 遍历所有的SpringApplicationRunListener的contextLoaded()方法,通知【run监听器和ApplicationContext装填完毕】

  10. 调用ApplicationContext的refresh()——完成填充IOC容器

  11. 查找当前ApplicationContext中是否注册有CommandLineRunner,如果有,则遍历执行它们。

  12. 遍历执行SpringApplicationRunListener的finished()。
    ——启动完毕

SpringApplicationRunListener

是SpringBoot应用的main()执行过程中接不同执行时点通知的【监听者】。
这里写图片描述

applicationListener

是Spring框架对【监听者】模式的一种框架实现
SpringBoot中添加自定义的ApplicationListener的两种方式
列表内容
这里写图片描述

ApplicationContextInitialzer

这里写图片描述

CommandLineRunner

这里写图片描述
这里写图片描述

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值