Spring Boot的应用打包与部署详解!

2025-12-27 02:12:526893

🏆本文收录于「滚雪球学SpringBoot」专栏(全网一个名),手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8

前言

在这篇文章中,我们将探讨Spring Boot的应用打包与部署。随着现代应用开发的普及,如何高效地打包和部署应用成为了至关重要的一步。我们将展示如何将Spring Boot应用打包为Jar或War文件,如何将应用部署到外部服务器或云平台(如Docker和Kubernetes),以及如何使用Spring Boot Actuator进行应用监控,确保应用的高可用性和健康状态。

🌱 一、将Spring Boot应用打包为Jar或War文件

Spring Boot允许你将应用打包为Jar或War文件。Jar(Java ARchive)是一种常见的打包格式,适用于独立运行的Spring Boot应用。War(Web ARchive)文件是用于Web应用部署的格式,适合部署到传统的应用服务器中。

1.1 打包为Jar文件

Spring Boot默认使用Jar格式进行打包。Jar文件包含了所有应用的代码、配置和依赖,可以通过一个简单的命令运行。

1.1.1 使用Maven打包为Jar

如果你使用Maven构建项目,确保在pom.xml文件中有如下配置:

jar

然后,在命令行中执行以下命令:

mvn clean package

执行完后,Spring Boot会生成一个包含所有依赖的可执行Jar文件,默认位于target目录下,文件名为-.jar。

你可以通过以下命令来运行打包后的Jar文件:

java -jar target/your-application.jar

1.1.2 打包为可执行Jar

Spring Boot的spring-boot-maven-plugin可以将应用打包成一个可执行的Jar文件,确保应用的所有依赖都被包含在内。

org.springframework.boot

spring-boot-maven-plugin

然后运行mvn clean package命令,生成可执行Jar。

1.2 打包为War文件

对于需要在传统Servlet容器(如Tomcat、Jetty等)中运行的应用,你可以选择将Spring Boot应用打包为War文件。与Jar不同,War文件需要外部服务器来运行,而Jar文件包含了内嵌的服务器。

1.2.1 配置Spring Boot为War

要将Spring Boot应用打包为War文件,你需要做如下修改:

在pom.xml中将packaging从jar更改为war:

war

确保SpringBootServletInitializer类继承自SpringBootServletInitializer,这是用于部署到外部Tomcat等服务器的关键。

import org.springframework.boot.web.support.SpringBootServletInitializer;

import org.springframework.boot.builder.SpringApplicationBuilder;

@SpringBootApplication

public class Application extends SpringBootServletInitializer {

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

@Override

protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {

return application.sources(Application.class);

}

}

通过mvn clean package命令打包应用为War文件。

部署到外部Tomcat、Jetty或其他Servlet容器。

1.2.2 运行War文件

部署War文件时,需要将其部署到外部服务器。不同的Web容器会有不同的部署方式。例如,将War文件放入Tomcat的webapps目录中并启动Tomcat。

🌍 二、部署到外部服务器或云平台

2.1 部署到Docker

Docker是一个开源平台,用于开发、传输和运行应用程序。通过将应用打包到Docker容器中,可以确保应用在任何地方的一致性执行。使用Docker部署Spring Boot应用非常简单。

2.1.1 创建Dockerfile

在项目的根目录下创建一个Dockerfile文件,内容如下:

# 使用官方的OpenJDK镜像

FROM openjdk:11-jdk

# 将本地的Jar包复制到容器中

COPY target/your-application.jar /app.jar

# 容器启动时执行的命令

ENTRYPOINT ["java", "-jar", "/app.jar"]

2.1.2 构建Docker镜像

在Dockerfile所在的目录中执行以下命令来构建Docker镜像:

docker build -t your-application .

2.1.3 运行Docker容器

构建完镜像后,使用以下命令运行Docker容器:

docker run -d -p 8080:8080 your-application

这将在后台运行容器,并将容器的8080端口映射到主机的8080端口。通过访问http://localhost:8080,你可以访问应用。

2.2 部署到Kubernetes

Kubernetes是一个开源的容器编排平台,它允许你自动化部署、扩展和管理容器化应用。要将Spring Boot应用部署到Kubernetes,首先需要创建Docker镜像,然后创建Kubernetes部署文件。

2.2.1 创建Kubernetes Deployment文件

创建一个deployment.yaml文件,描述如何在Kubernetes中部署Spring Boot应用:

apiVersion: apps/v1

kind: Deployment

metadata:

name: spring-boot-app

spec:

replicas: 2

selector:

matchLabels:

app: spring-boot-app

template:

metadata:

labels:

app: spring-boot-app

spec:

containers:

- name: spring-boot-app

image: your-application:latest

ports:

- containerPort: 8080

2.2.2 部署到Kubernetes

使用kubectl命令将应用部署到Kubernetes集群中:

kubectl apply -f deployment.yaml

然后,可以创建一个服务来暴露应用:

apiVersion: v1

kind: Service

metadata:

name: spring-boot-app-service

spec:

selector:

app: spring-boot-app

ports:

- protocol: TCP

port: 8080

targetPort: 8080

type: LoadBalancer

部署服务:

kubectl apply -f service.yaml

通过kubectl get services查看暴露的服务地址,你可以通过该地址访问应用。

📊 三、使用Spring Boot Actuator进行应用监控

Spring Boot Actuator是一个强大的工具,它提供了很多监控功能,可以帮助你在生产环境中管理和监控应用。Spring Boot Actuator提供了许多内置的端点,用于查看应用的健康状态、指标、日志等。

3.1 添加Spring Boot Actuator依赖

首先,你需要在pom.xml中添加Spring Boot Actuator的依赖:

org.springframework.boot

spring-boot-starter-actuator

3.2 配置Actuator端点

Spring Boot Actuator默认启用了多个监控端点,包括健康检查、应用信息、日志等。你可以通过application.properties来配置Actuator的端点。

management.endpoints.web.exposure.include=health,info,metrics

这个配置会暴露健康检查、应用信息和指标端点。

3.3 健康检查

通过/actuator/health端点,你可以查看应用的健康状态:

GET /actuator/health

返回结果通常会类似于:

{

"status": "UP"

}

3.4 获取应用信息

/actuator/info端点提供有关应用的信息,比如版本、构建时间等:

GET /actuator/info

返回内容类似于:

{

"app": {

"version": "1.0.0",

"name": "spring-boot-app"

}

}

3.5 查看应用的指标

你可以使用/actuator/metrics端点查看应用的性能指标:

GET /actuator/metrics

🎉 四、总结

在本文中,我们详细介绍了Spring Boot应用的打包与部署:

将Spring Boot应用打包为Jar或War文件:使用Maven来打包应用,可以选择将应用打包为Jar或War文件,分别适用于独立运行或传统Servlet容器部署。

部署到Docker和Kubernetes:将Spring Boot应用容器化,部署到Docker和Kubernetes中,实现应用的高效部署和扩展。

使用Spring Boot Actuator进行应用监控:通过Spring Boot Actuator提供的健康检查、指标、日志等功能来监控和管理应用的状态。

希望这些内容能够帮助你更加高效地打包、部署和监控Spring Boot应用,确保你的应用在生产环境中的稳定性和可维护性!🚀

🧧福利赠与你🧧

无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学SpringBoot」专栏(全网一个名),bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门SpringBoot,就像滚雪球一样,越滚越大, 无边无际,指数级提升。

最后,如果这篇文章对你有所帮助,帮忙给作者来个一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。

同时欢迎大家关注公众号:「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。

✨️ Who am I?

我是bug菌,CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云多年度十佳博主/价值贡献奖,掘金多年度人气作者Top40,掘金等各大社区平台签约作者,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 30w+;更多精彩福利点击这里;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿。

-End-