liujunliqwerty的gravatar头像
liujunliqwerty 2023-06-12 14:13:55
springboot启动流程

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())。


打赏
最近浏览
最代码官方  LV168 2023年6月18日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友