在本节中,我们将学习如何在Tomcat服务器上部署Spring Boot应用程序。

部署过程包含三个步骤:

1.设置Spring Boot应用程序
2,创建Spring Boot WAR
3.部署WAR到Tomcat

示例

让我们创建一个可以部署到Tomcat的Maven示例。

设置Spring Boot应用程序

步骤1:打开Spring Initializr http://start.spring.io/

步骤2:提供Group名称。我们提供了cn.javatiku。

步骤3:提供Artifact Id。我们提供了spring-boot-war-deployment-example。

步骤4:添加Spring Web依赖。

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

步骤5:点击生成按钮。它会将与项目相关的所有规范包装成一个jar文件并下载到我们的本地系统。
1368b8200a0166258ed7f49a55661e6.png
步骤6:解压缩jar文件。

步骤7:通过以下步骤导入项目文件夹:

文件 -> 导入 -> 存在的Maven项目 -> 下一步 -> 浏览 -> 选择项目文件夹 -> 完成

导入项目后,我们可以在IDE的包资源管理器部分看到以下目录结构。
efc94d407639f70470a257d9d5b753d.png

步骤8:在src/main/java文件夹中创建名为cn.javatiku的Controller类。我们创建了名为DemoRestController的类。

在Controller类中,我们定义了一个名为hello()的方法,它返回一个字符串。

DemoRestController.java

package cn.javatiku;
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。

12ff5f4330ab43b962a036acbbceacb.png

注意:在进行下一步之前,请确保应用程序正常运行。

创建Spring Boot WAR

它利用了Spring Framework的Servlet 3.0支持,并允许我们在Servlet容器启动应用程序时进行配置。创建WAR进行部署有三个步骤:

在主类中扩展SpringBootServletInitializer类。
1.将嵌入式Servlet容器标记为提供。
2.将打包方式更新为WAR。
3.让我们在一个应用程序中实现上述三个步骤。

步骤11:打开SpringBootWarDeploymentExampleApplication.java文件,并初始化Tomcat所需的Servlet上下文。为此,请扩展SpringBootServletInitializer接口。

public class SpringBootWarDeploymentExampleApplication extends SpringBootServletInitializer  
{  
}  

第12步:重写Configure方法。

@Override  
protected SpringApplicationBuilder configure(SpringApplicationBuilder application)   
{  
return application.sources(SpringBootWarDeploymentExampleApplication.class);  
}   

SpringBootWarDeploymentExampleApplication.java

package cn.javatiku;  
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)标记为提供。

<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>cn.javatiku</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 package命令。然后,我们的WAR文件将在/target/abc.war(其中abc是假定的Artifact Id)生成。需要注意的是,此新设置使我们的Spring Boot应用程序成为非独立应用程序。

第16步:通过以下步骤创建WAR文件:

右键单击项目 -> 运行为 -> 5 Maven构建
e103370249a4c65f6832847cb1c648c.png

当屏幕上出现Edit Configuration对话框时。

第17步:在Goals标签中输入clean install,并勾选Skip Tests。依次单击应用和运行按钮。
a378674f825cebd6186ea5a07e5a55b.png

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

dd811d77a1899fa2560e37563310534.png

第18步:复制路径并访问应用程序的target文件夹。我们可以在target文件夹中找到与pom.xml文件中指定的名称相同的WAR文件。在我们的情况下,路径是:

C:\Users\Anubhav\Documents\workspace-sts-3.9.9.RELEASE\spring-boot-war-deployment-example\target

f485ea16db526a5606165d2611f7447.png

部署WAR文件到Tomcat

要部署WAR文件,请按以下步骤操作:

第19步:如果尚未安装,请下载并安装Apache Tomcat Server。

第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>startup

e11ae9f6335684d08282302d5a81081.png

启动命令将启动Tomcat服务器并部署WAR文件,如下所示。
4368391d29fcb8de15665fde39b7476.png
8592d5e38acd3bc2eb7e61dd834888b.png

第23步:打开浏览器并调用URL http://localhost:8080/web-services/hello。它会返回消息Hello User, have a nice day.

标签: spring, Spring教程, Spring语言学习, Spring框架, Spring框架教程, Spring框架高级教程, spring boot, spring boot入门教程, spring boot学习教程, spring boot下载, spring boot框架入门, spring boot面试题, spring boot笔试题, spring boot学习指南, spring boot技术