运行中的Spring Boot应用是否必然创建并启动了Tomcat容器?
Spring Boot 运行时是否一定启动 Tomcat?
答案是否定的,Spring Boot 运行过程中不一定会启动 Tomcat,具体可以分为以下几种情况:
- 引入默认的
spring-boot-starter-web依赖时,Spring Boot 会自动引入内嵌的 Tomcat 作为 Servlet 容器,这种场景下应用启动后 Tomcat 也会同步运行,是最常见的情况。 - 可以手动替换内嵌容器:我们可以排除
spring-boot-starter-web传递依赖中的 Tomcat,替换为 Jetty、Undertow 等其他 Servlet 容器,此时应用运行时启动的就是替换后的容器,不会启动 Tomcat。 - 非 Web 类 Spring Boot 应用不会启动任何 Servlet 容器:如果你的应用是定时任务、批量处理、命令行工具这类非 Web 服务,只引入了核心依赖
spring-boot-starter没有引入任何 Web 相关依赖,Spring Boot 会以普通 Java 进程的形式运行,不会启动 Tomcat 或其他任何 Servlet 容器。 - 即使引入了 Web 依赖,也可以通过配置关闭容器启动:只要在配置文件中添加
spring.main.web-application-type=none,就可以强制指定应用以非 Web 模式运行,此时哪怕有 Web 依赖也不会启动 Tomcat。
内容的提问来源于stack exchange,提问作者PolamreddyVivekReddy
相关产品推荐
相关产品推荐

