tomcat 在Spring boot 中的启动时机

之前遇到一个问题,我们需要在Spring Boot 启动后做一些配置表刷新的工作,这个刷新比较耗时

于是,我们实现了 xxRunner implements CommandLineRunner

但发现一个问题,配置还未刷新,tomcat就对外服务了

近来正在阅读源码,在源码里找到了答案

tomcat 在Spring boot 中的启动时机

tomcat 在Spring boot 中的启动时机

简单来看,Tomcat 在 refreshContext 的时候便创建了,而 CommandLineRunner 的调用却在最后。

但在 onRefresh 的时候,tomcat 只是完成了注册操作,并没有真的启动,真的启动函数其实是 finishRefresh 并且在这里发布事件

tomcat 在Spring boot 中的启动时机