文章围绕 Spring Boot 启动原理,解答三个问题:一是启动后持续运行,是因为创建了非守护线程池,JVM 需等用户线程结束才退出;二是能切换 Tomcat、Jetty 等容器,靠条件注解按依赖自动选择对应的 ServletWebServerFactory;三是 main 函数启动 Web 容器,是在 refresh 的 onRefresh 阶段创建并初始化 WebServer,底层创建线程池并监听端口。核心方法是带着问题 debug 跟踪源码验证。
完成下面两步后,将自动完成登录并继续当前操作。