在本节中,我们将学习如何在 Tomcat Server 上部署 Spring Boot 应用程序。
它包括三个步骤:
- 设置 Spring Boot 应用程序
- 创建一个 Spring Boot WAR
- 将 WAR 部署到 Tomcat
例子
让我们创建一个要部署在 Tomcat 上的 Maven 示例
设置 Spring Boot 应用程序
第 1 步:打开 Spring Initializr http://start.spring.io。
第 2 步:提供组名称。我们提供了com.javatpoint。
第 3 步:提供工件ID。我们提供了spring-boot-war-deployment-example。
第 4 步:添加Spring Web依赖项。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
第5步:点击生成按钮。它包装了与项目相关的所有规范,并在我们的本地系统中下载了jar文件。


第6步:解压jar文件。
第7步:使用以下步骤导入项目文件夹:
文件 -> 导入 -> 现有 Maven 项目 -> 下一步 -> 浏览 -> 选择项目文件夹 -> 完成
导入项目后,我们可以在 IDE 的Package Explorer部分看到如下目录结构。

第 8 步:在com.javatpoint包中创建一个 Controller 类。我们创建了一个名为DemoRestController 的类。
在控制器类中,我们定义了一个返回字符串的方法hello()。
DemoRestController.java
package com.javatpoint;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class DemoRestController
{
@GetMapping("/hello")
public String hello()
{
return "Hello User, have a nice day.";
}
}
第 9 步:将SpringBootWarDeploymentExampleApplication.java文件作为 Java 应用程序运行。
第 10 步:打开浏览器并调用 URL http://localhost:8080/hello。

注意:在进行下一步之前,请确保应用程序正常运行。
创建一个 Spring Boot WAR
它利用 Spring Framework 的 Servlet 3.0 支持,并允许我们在 servlet 容器启动时配置应用程序。创建用于部署的 WAR分为三个步骤:
- 扩展主类中的SpringBootServletInitializer类。
- 将嵌入式 servlet 容器标记为已provided。
- 将打包JAR更新为
让我们在一个应用程序中实现上述三个步骤。
第11步:打开SpringBootWarDeploymentExampleApplication.java文件,初始化Tomcat所需的Servlet Context。为了实现同样的扩展SpringBootServletInitializer接口。
public class SpringBootWarDeploymentExampleApplication extends SpringBootServletInitializer
{
}
第 12 步:覆盖Configure方法。
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
{
return application.sources(SpringBootWarDeploymentExampleApplication.class);
}
SpringBootWarDeploymentExampleApplication.java
package com.javatpoint;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class SpringBootWarDeploymentExampleApplication extends SpringBootServletInitializer
{
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
{
return application.sources(SpringBootWarDeploymentExampleApplication.class);
}
public static void main(String[] args)
{
SpringApplication.run(SpringBootWarDeploymentExampleApplication.class, args);
}
}
第 13 步:打开pom.xml文件并将 servlet 容器 (Tomcat) 标记为provided。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
第 14 步:我们需要部署WAR文件,因此在 pom.xml 文件中将包类型更改为 WAR。
<packaging>war</packaging>
第 15 步:使用<finalName>标记修改最终 WAR 文件名,以避免包含版本号。我们创建了一个名为web-services 的 WAR 文件。
<finalName>web-services</finalName>
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.javatpoint</groupId>
<artifactId>spring-boot-war-deployment-example</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>spring-boot-war-deployment-example</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>web-services</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
为了构建我们的 Tomcat 可部署的 WAR 应用程序,我们执行 maven clean 包。之后,我们的 WAR 文件在/target/abc.war中生成(其中abc被假定为 Artifact Id)。我们应该考虑到这个新设置使我们的 Spring Boot 应用程序成为一个非独立应用程序。
第 16 步:使用以下步骤创建WAR文件:
项目右键->运行方式->5 Maven Build
屏幕上会出现一个编辑配置对话框。
第 17 步:在“目标”标签中编写全新安装并检查“跳过测试” 。分别单击应用和运行按钮。

WAR文件创建成功后,会在控制台显示WAR文件路径和BUILD SUCCESS消息,如下图所示。

第 18 步:复制路径并访问应用程序的目标文件夹。我们在目标文件夹中找到了与我们在 pom.xml 文件中指定的名称相同的 WAR 文件。在我们的例子中,路径是:
- C:\Users\Anubhav\Documents\workspace-sts-3.9.9.RELEASE\spring-boot-war-deployment-example\target

将 WAR 文件部署到 Tomcat
要部署 WAR 文件,请执行以下步骤:
第 19 步:下载并安装Apache Tomcat 服务器(如果未安装)。
第 20 步:复制 WAR 文件(web-services.war)并将其粘贴到 Tomcat的webapps文件夹中。在我们的例子中,webapps 文件夹的位置是:
- C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps

第 21 步:现在打开命令提示符并键入以下命令:
- C:\Cd Program Files\Apache Software Foundation\Tomcat 8.5\bin
- C:\Cd Program Files\Apache Software Foundation\Tomcat 8.5\bin >启动

启动命令启动 Tomcat 服务器并部署 WAR 文件,如下所示。

下图显示 WAR 部署成功。
第 23 步:打开浏览器并调用 URL http://localhost:8080/web-services/hello。它返回消息Hello User, have a nice day。
2749

被折叠的 条评论
为什么被折叠?



