java - Spring Boot 应用程序的嵌入式 HTTP 服务器在哪里?
问题描述
我听说 Spring Boot 应用程序包含一个嵌入式 HTTP 服务器。但是,在我运行 gradlew 之后,我得到了一个 war 文件,我只是将它放到了 Tomecat 的 webapp 目录中。显然,WAR 文件不包含嵌入式 HTTP 服务器。那么我的 build.gradle 文件是否以某种方式配置为排除 HTTP 服务器?如果是这样,哪个选项是为此目的?
解决方案
这取决于您如何管理 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 项目。
推荐阅读
- reactjs - 没有 React-Native 或 React-Navigation 的 React 深度链接
- swagger - Swagger OpenApi 动态查询参数名称使用 Spring 自定义解析器的注释
- .net - 使用给定值搜索数据库
- docker - 来自 jgroups 堆栈的 jboss/eap docker 容器错误
- corda - 当交易中涉及的所有帐户都在同一个节点上时,使用或不使用 CollectSignatureFlow?
- javascript - 如何仅使用类/函数的对象来增加计数器而不在 Javascript 中调用任何函数的方法或属性
- python - 如何从 .ui 文件向 Qt 按钮添加功能?
- php - Symfony,具有来自不同实体的字段的表单
- python - 如何使用此条件对我的字典进行排序
- javascript - ThreeJS / Panolens:进入全景时相机的方向?