这取决于你的 Spring Boot 项目打包方式以及你希望如何部署。简单来说:不需要同时配置 JDK、Tomcat 和 Spring Boot 内置容器三者,而是根据架构选择其中一种组合。
以下是三种常见的部署场景及所需配置:
1. 使用 Spring Boot 内置容器(最推荐,主流做法)
这是目前 Spring Boot 项目最标准的部署方式。Spring Boot 将 Tomcat(或 Jetty/Undertow)打包在可执行的 JAR 文件中。
- 需要配置什么?
- ✅ JDK:服务器必须安装对应版本的 JDK(如 JDK 8, 11, 17 等)。
- ❌ 独立 Tomcat:不需要单独安装和配置 Tomcat 服务器。
- ❌ 外部 Spring Boot 容器:不需要额外配置,因为容器已经“内嵌”在代码包里了。
- 启动命令:
java -jar your-app.jar - 优点:环境一致性高,部署简单(只需一个 jar 包),避免了不同版本容器与代码的兼容性问题。
2. 传统 WAR 包部署模式
如果你需要将项目部署到现有的、独立的 Tomcat 容器中(例如公司已有现成的 Tomcat 集群,或者需要利用 Tomcat 的高级特性)。
- 需要配置什么?
- ✅ JDK:服务器必须安装 JDK。
- ✅ 独立 Tomcat:需要安装并配置好 Tomcat 服务器。
- ❌ Spring Boot 内置容器:在打包时(
pom.xml),你需要将spring-boot-starter-tomcat的 scope 设置为provided,这样它就不会被打包进 WAR 包,而是依赖外部 Tomcat 提供的容器。
- 启动方式:
将生成的.war包放入 Tomcat 的webapps目录,然后启动 Tomcat。 - 适用场景:遗留系统迁移、多应用共享同一个 Tomcat 实例、或必须使用特定版本的 Tomcat 功能。
3. 纯 JDK + 自定义容器(较少见)
如果你完全不想用 Spring Boot 的嵌入式容器,也不想用 Tomcat,而是自己写了一个 Servlet 容器(极少见),那只需要 JDK 和对应的容器程序。但在现代 Java 开发中几乎不会这样操作。
总结与建议
| 部署模式 | JDK | 独立 Tomcat | Spring Boot 内置容器 | 推荐程度 |
|---|---|---|---|---|
| Jar 包运行 (Embedded) | ✅ 需要 | ❌ 不需要 | ✅ 已内置 | ⭐⭐⭐⭐⭐ (首选) |
| War 包部署 (External) | ✅ 需要 | ✅ 需要 | ❌ 排除 (Scope: Provided) | ⭐⭐ (特定场景) |
最佳实践建议:
对于绝大多数新项目,请采用 方案 1(Jar 包运行)。
- 在服务器上只安装 JDK。
- 将打包好的
xxx.jar上传到服务器。 - 直接通过
java -jar命令启动。 - 配合
systemd(Linux) 或 Docker 进行进程管理和守护。
注意:无论哪种方式,JDK 都是必须的,因为 JVM 是运行 Java 程序的基石。
CLOUD云枢