SpringBoot资料合集-06【Spring Boot启动原理源码剖析】

20 篇文章 1 订阅
16 篇文章 1 订阅

概念&原理:

在这里插入图片描述

源码:

SpringBoot 事假监听器发布顺序:

1 1.ApplicationStartingEvent在运行开始时发送,但在进行任何处理之前(侦听器和初始化程序的注册除外)发送。 
2 2.在创建上下文之前,将发送ApplicationEnvironmentPreparedEvent3 3.准备ApplicationContext并调用ApplicationContextInitializers之后,将发送ApplicationContextInitializedEve 
nt。 
4 4.读取完配置类后发送ApplicationPreparedEvent5 5.在刷新上下文之后但在调用任何应用程序和命令行运行程序之前,将发送ApplicationStartedEvent6 6.紧随其后发送带有LivenessState.CORRECT的AvailabilityChangeEvent,以指示该应用程序被视为处于活动状态。 
7 7.在调用任何应用程序和命令行运行程序之后,将发送ApplicationReadyEvent8 8.紧随其后发送ReadabilityState.ACCEPTING_TRAFFIC的AvailabilityChangeEvent,以指示应用程序已准备就绪,可以 
处理请求。 
9 如果启动时发生异常,则发送ApplicationFailedEvent
  1. ApplicationStartingEvent
    在这里插入图片描述
  2. ApplicationEnvironmentPreparedEvent
    在这里插入图片描述1.调用SpringApplication.run启动springboot应用
1 SpringApplication.run(Application.class, args);

2.使用自定义SpringApplication进行启动

1 public static ConfigurableApplicationContext run(Class<?>[] primarySources, String[] args) { 
2 return new SpringApplication(primarySources).run(args); 
3 } 

1. 创建SpringApplication

  1. new SpringApplication(primarySources)
1 public SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) { 
2 this.resourceLoader = resourceLoader; 
3 Assert.notNull(primarySources, "PrimarySources must not be null"); 
4 // 将启动类放入primarySources 
5 this.primarySources = new LinkedHashSet<>(Arrays.asList(primarySources)); 
6 // 根据classpath 下的类,推算当前web应用类型(webFlux, servlet) 
7 this.webApplicationType = WebApplicationType.deduceFromClasspath(); 
8 // 就是去spring.factories 中去获取所有key:org.springframework.context.ApplicationContextInitializer 
9 setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class)); 
10 //就是去spring.factories 中去获取所有key: org.springframework.context.ApplicationListener 
11 setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class)); 
12 // 根据main方法推算出mainApplicationClass
13 this.mainApplicationClass = deduceMainApplicationClass(); 
14 } 
  1. org.springframework.context.ApplicationContextInitializer
  2. 在这里插入图片描述
  3. org.springframework.context.ApplicationListener
    在这里插入图片描述
    总结:
    1.获取启动类
    2.获取web应用类型
    3.读取了对外扩展的ApplicationContextInitializer ,ApplicationListener
    4.根据main推算出所在的类

就是去初始化了一些信息

分享就到这里了,该文章后续及更多JAVA技术知识可关注我,免费领取

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值