首页 > 解决方案 > Spring Boot 应用程序的嵌入式 HTTP 服务器在哪里?

问题描述

我听说 Spring Boot 应用程序包含一个嵌入式 HTTP 服务器。但是,在我运行 gradlew 之后,我得到了一个 war 文件,我只是将它放到了 Tomecat 的 webapp 目录中。显然,WAR 文件不包含嵌入式 HTTP 服务器。那么我的 build.gradle 文件是否以某种方式配置为排除 HTTP 服务器?如果是这样,哪个选项是为此目的?

标签: javaspringspring-boot

解决方案


这取决于您如何管理 Spring Boot 项目。使用 maven 或 gradle,通常在创建 WAR spring boot 项目时,您将 servlet 容器依赖项标记为已提供(它将由部署 WAR 的 servlet 提供)。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

这意味着来自此依赖项的所有功能实现都不会打包在最终工件中,而是由部署该工件的环境提供。(例如 Tomcat 服务器。)

另一方面,如果您没有将 servlet 依赖项标记为提供,它将与创建独立应用程序的项目(作为嵌入式服务器,但背后有更多魔力)打包在一起。请注意,带有嵌入式服务器的项目的打包也应更改为 JAR。这也不适用于不使用 servlet 的 Reactor 项目。


推荐阅读