Spring Boot应用的打包和部署

  

  传统的Web应用在发布之前通常会打成WAR包,然后将WAR包部署到Tomcat等容器中使用,而通过前面的学习我们已经知道,Spring Boot应用既能以JAR包的形式部署,又能以WAR包的形式部署。

JAR包

  打包方式是JAR,在idea中只需要执行Maven的package命令就可以将项目打成一个JAR包
  JAR包复制到系统D盘,并使用压缩软件打开。我们可以在其lib文件夹中发现很多JAR包,实际上这些JAR包就是项目所依赖的JAR包,其中还包括了Tomcat的JAR包
  由于在项目JAR包中已经包含了Tomcat,所以我们不需要另外部署Tomcat就可以在命令行中将项目启动起来。
  在命令提示符窗口中进入JAR包所在目录(D盘),并通过如下命令来执行JAR包:

java -jar springboot-0.0.1-SNAPSHOT.jar

 

WAR包

  虽然通过Spring Boot内嵌的Tomcat可以直接运行所打的JAR包,但是有时候我们也会希望通过外部的Tomcat来管理多个项目。由于JAR包在Tomcat中是无法运行的,所以我们需要将项目打成WAR包的形式。
  要想将项目打成WAR包,并可以在Tomcat中运行,需要执行以下两个步骤。

1. 修改打包方式,并添加Tomcat依赖

将项目pom.xml中<packaging>元素内的jar修改为war,并在文件中添加Tomcat的依赖配置。其修改和添加的配置信息如下:

<packaging>war</packaging>
...
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

 

  上述配置代码中,spring-boot-starter-tomcat是Spring Boot自带的Tomcat依赖,默认会被打到项目的lib包中。当我们将其依赖范围设置为provided时,将产生一个可执行的WAR包,在包中的lib-provided目录会有provided依赖。这样不仅可以部署到Servlet容器启动项目,还可以通过命令行执行java-jar命令来运行此应用。

2. 创建SpringBootServletInitializer子类,并覆盖其配置方法

  要产生一个可部署的war包,还需要提供一个SpringBootServletInitializer子类,并覆盖它的configure()方法。通常我们可以采用两种方式:一是把应用的主类(引导类)修改为继承SpringBootServletInitializer的类,并覆盖configure()方法;二是创建一个继承了SpringBootServletInitializer的类,并覆盖configure()方法。以创建SpringBootServletInitializer子类的方式为例,其子类实现代码如文件3-11所示。
  文件3-11 ServletInitializer.java

复制代码
package com.xc.springboot;

import javafx.application.Application;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }
}
复制代码

  完成这两步后,即可通过package命令将项目打成WAR包,然后将WAR包部署到Tomcat中启动。

posted @   草木物语  阅读(1633)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示