1,创建一个StopWatch实例,用来记录SpringBoot的启动时间。
通过SpringFactoriesLoader加载listeners:比如EventPublishingRunListener。
发布SprintBoot开始启动事件(EventPublishingRunListener#starting())。
2,创建和配置environment(environmentPrepared())。
打印SpringBoot的banner和版本。
3,创建对应的ApplicationContext:Web类型,Reactive类型,普通的类型(非Web)
刷新上下文 prepareContext:自动装配和启动 tomcat就是在这个方法里面完成
4,准备ApplicationContext,Initializers设置到ApplicationContext(contextPrepared())。
打印启动日志,打印profile信息(如dev, test, prod)。
5,最终会调用到AbstractApplicationContext#refresh方法,实际上就是Spring IOC容器的创建过程,并且会进行自动装配的操作,以及发布ApplicationContext已经refresh事件,标志着ApplicationContext初始化完成(contextLoaded())
6,stopWatch停止计时,日志打印总共启动的时间。
7,发布SpringBoot程序已启动事件(started())。
8,调用ApplicationRunner和CommandLineRunner。
9,最后发布就绪事件ApplicationReadyEvent,标志着SpringBoot可以处理就收的请求了(running())。
最近浏览


