本节摘要:开发完成,配置与上线。本节讲清 Spring Boot 的配置体系(application.properties、多环境配置)、打包方式(可执行 JAR)、部署形态(服务器、容器),以及"内置服务器"让部署变简单的核心理解。
阅读完本节,你应当能够:
"开发跑通了,怎么上线?"——Spring Boot 的部署是出了名的简单:内置服务器 + 打包成可执行 JAR,一个命令就能跑。相比传统 Java 应用要单独装 Tomcat、配置 Web 服务器,Spring Boot 把部署压缩成"拷贝一个文件、运行一条命令"。
配置与部署的关键链路:
application.properties 主配置 application-dev.properties 开发环境 application-prod.properties 生产环境 切换:spring.profiles.active=prod
# 打包成可执行 JAR mvn package # 运行 java -jar app.jar
| 环境 | 配置要点 |
|---|---|
| dev | 本地数据库、调试日志 |
| test | 测试库 |
| prod | 生产库、加密密钥 |
💡 关键直觉:配置要"环境隔离"——数据库地址、密钥按环境分文件管理,别让生产密钥出现在开发配置里。
| 形态 | 做法 |
|---|---|
| 直接运行 | java -jar |
| 容器化 | Docker 打包 |
| 云平台 | 托管部署 |
配置:生产环境参数就位 密钥:走环境变量/密钥服务 端口:对外端口正确 日志:输出到文件
⚠️ 常见坑:生产用开发配置。数据库地址、调试开关、密钥都在开发配置里,直接上线等于裸奔——部署前逐项核对生产配置。
Spring Boot 主线走完。第 3 章换 Python 阵营——Django 快速入门。
Q1:为什么 Spring Boot 部署起来这么简单?
因为它的"内置服务器"理念:应用把 Tomcat 等 Web 服务器打进了 JAR 包,打包产物是一个"可直接运行的可执行 JAR",里面包含了应用代码和服务器,一条 java -jar 命令就启动。相比传统 Java Web 应用要单独装 Tomcat、把 war 包部署进容器目录,Spring Boot 把"部署"压缩成了"拷文件 + 跑命令",这就是它受欢迎的重要原因。
Q2:多环境配置是怎么工作的?
配置文件按环境拆分:application.properties 是公共配置,application-dev.properties、application-prod.properties 是各环境专属配置。运行时通过 spring.profiles.active 指定启用哪个环境(比如生产启动参数带 prod),框架会把公共配置和对应环境的配置合并生效。这样数据库地址、日志级别、开关参数都按环境隔离,开发测试生产互不干扰,也不会把生产密钥泄漏到开发环境。
Q3:Docker 部署和直接 java -jar 有什么区别?
直接 java -jar 依赖服务器上装了匹配的 JDK;Docker 把应用和运行环境一起打包成镜像,任何装了 Docker 的机器都能跑,环境一致性最好。Docker 还能配合容器编排(比如做多实例负载均衡)实现自动扩缩容。入门阶段用 java -jar 就够,但了解 Docker 的部署方式能让你提前理解现代后端的部署形态。
Q4:上线前检查清单为什么重要?
因为"本地能跑"和"生产能跑"是两回事。本地连的是本地数据库,生产要连生产库;本地调试日志开着,生产要关掉敏感信息;本地端口随意,生产端口要对外开放。对照检查清单逐项核对(配置就位、密钥走环境变量、端口正确、日志落盘),能避免"部署完发现连错库、日志刷屏、端口不通"这些低级但致命的线上事故。
动手建议:把开发完成的 Spring Boot 应用打一次包(mvn package),找到生成的 JAR 文件,用 java -jar 在命令行运行,再访问接口确认可用。然后尝试配置两个环境:本地 dev 用本地数据库,写一个 prod 配置文件,用参数切换 profile 启动两次,观察配置生效差异。再想一步:如果要做 Docker 部署,需要一个 Dockerfile,核心就两行——基于 JDK 镜像、拷贝 JAR、运行它。这套"打包—运行—切环境"的体验,会让你对部署从"会怕"变"会做"。
本节练习的目标,是亲手把应用"变成能上线的产物",并理解环境切换。步骤如下:
第一步,打包。在项目根目录执行 Maven 打包命令,等待构建完成。验收标准:在 target 目录下生成一个可执行 JAR 文件。
第二步,运行打包产物。停掉 IDE 里的运行实例,在命令行用 java 命令运行 JAR。验收标准:应用正常启动,访问接口依然可用——这就是"打包产物与开发环境等价"的验证。
第三步,配置多环境。创建两个配置文件,一个本地(连接本地数据库、日志详细),一个生产(连接另一套库、日志简略、关掉部分调试输出)。验收标准:配置文件结构清晰,各自有独立的数据库地址。
第四步,切换环境。启动时用参数指定使用生产配置,观察应用读取的是生产配置中的数据库地址。再切换回本地配置,确认行为随之改变。验收标准:同一个打包产物,用不同参数能切换不同环境——这正是"环境隔离"的体现。
第五步,上线检查。对照本节的检查清单,逐项确认:生产配置就位、密钥走环境变量、端口正确、日志落盘。把不满足的项一一修正。验收标准:清单项全部打勾。
五步走完,你不仅会打包运行,还理解了"配置环境分离、产物与环境无关"的部署哲学。这是从"开发完"到"能上线"的关键一步。
部署的本质是"产出环境无关的产物,用配置适配不同环境"。亲手打一次包、切一次环境、做一次上线检查,部署对你就不再神秘。