是否每个 spring 启动应用程序都会创建一个 tomcat 容器以便能够 运行?

Does every spring boot application create a tomcat container to be able to run?

例如, 我知道添加特定的依赖项,如包含 tomcat 的 spring-boot-starter-web 作为传递依赖项会触发 spring 框架来初始化 tomcat 容器,但我想知道我们是否说 spring-boot 应用程序是 运行,是否总是意味着 tomcat 也是 运行?

您的 JAR 中可以有一个嵌入式服务器,该服务器可以独立 运行。默认情况下它是 Tomcat 但您可以将其更改为其他内容,例如 Jetty。其他详细信息:

如果您不想拥有嵌入式服务器并且想要部署您的应用程序,您还可以创建 WAR 文件而不是 JAR 文件。其他详细信息:

I want to know if we say a spring-boot application is running, does it imply always that tomcat is also running?

不,不是。

Spring boot既可以用于web应用程序,也可以用于非web应用程序。 例如,对于 Web 应用程序,您可以使用 tomcat/jetty/undertow/netty,您可以选择最适合您的方式。

如果您不想 运行 一个 嵌入式 版本的 Web 服务器,您可以选择创建一个 WAR 文件并将其放入网络服务器提前准备好。

如果您根本不想 运行 Web 应用程序(在最广泛的意义上围绕“请求 - 响应”工作方式构建的东西)- 您可以创建一个“CommandLineRunner”-在这种情况下,您不需要依赖 web-mvc 和 webflux。有关命令行运行程序的更多信息,请阅读 here for example