Skip to content

为生产环境打包

当你的 Spring Boot 应用程序准备好进行生产部署时,有多种打包和优化选项可供选择。

1. 核心特性

Spring Boot 提供了完整的打包支持,包括创建可执行的“胖 JAR(Fat Jar)”或“WAR”包。详细功能请参考文档的 打包 Spring Boot 应用 章节。

2. 生产就绪特性

对于生产环境所需的健康检查、审计、指标监控(REST 或 JMX 端点),建议添加 spring-boot-starter-actuator。 它可以为你提供强大的应用监控能力,详细信息请查阅 Actuator 监控指南


补充教学

1. 为什么推荐打成 JAR 包而不是 WAR?

  • 自包含性:JAR 包内嵌了 Tomcat/Jetty,不依赖外部容器环境,部署极其简单。
  • 版本可控:服务器容器版本与代码版本解耦,避免了外部 Tomcat 升级导致应用奔溃的问题。
  • 微服务友好:更符合容器化(Docker)的运行逻辑。

2. 打包时的性能优化建议

  • 分层 JAR (Layered JARs):Spring Boot 支持将依赖包和业务代码分层打包。在 Docker 构建时,由于依赖层通常不变,这能极大地利用缓存,减少镜像推送的时间。
  • 排除不必要的依赖:通过构建工具的 exclude 功能,移除仅开发使用的库(如 DevTools 会被自动排除,但其他库需注意)。

3. 可执行脚本的支持

在 Linux 环境下,你可以给 JAR 包添加一个完全可执行的头部,使其可以像脚本一样直接运行(./myapp.jar),并能通过 systemdinit.d 方便地进行服务化管理。

Based on Spring Framework.