为生产环境打包
当你的 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),并能通过 systemd 或 init.d 方便地进行服务化管理。