SpringBoot启动流程大概:
ApplicationListener
为key的监听器,后续在SpringBoot加载的过程中会基于事件发布来做很多扩展通知。run方法
开始执行,记录开始执行时间stopwatch。SpringApplicationRunListeners
中,以便支持后续的事件发布订阅。ApplicationStartingEvent事件
,属于是一个Startup开始事件,感兴趣的监听器就会执行具体对应的startup方法。spring.profiles.active
环境来激活指定的环境配置,来设置Environment对象
。ApplicationEnvironmentPreparedEvent事件
,感兴趣的监听器就会触发具体的方法。AnnotationConfigServletWebServerApplicationContext
。applicationContext#setEnvironment()
,将环境变量配置对象Environment设置到上下文中,然后执行ApplicationContextInitializer初始化上下文对象。ApplicationContextInitialzedEvent事件
,感兴趣的监听器执行对应的容器初始化方法。ApplicationPreparedEvent事件
,感兴趣的监听器执行对应的方法。#refresh()
方法执行,和Spring的refresh不同的是,这个子类是AnnotationConfigServletWebServerApplicationContext
。#refresh()
方法中,除了执行IOC的流程外,后面还会执行#onRefresh()
方法,这个方法里面就会创建servlet容器
,注册DispatcherServlet
。ApplicationStartedEvent事件
,感兴趣的监听器执行对应的started方法。ApplicationReadyEvent事件
,感兴趣的监听器执行对应的就绪方法。ApplicationRunner
接口的类,且自动执行覆写的run方法。CommandLineRunner
接口的类,且自动执行覆写的run方法。ApplicationFailedEvent
,监听器执行具体的异常处理方法。发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/171553.html原文链接:https://javaforall.cn