Spring Boot教程之二十五: 使用 Tomcat 部署项目

Spring Boot -- 使用 Tomcat 部署项目

Spring Boot 是一个基于微服务的框架,在其中创建可用于生产的应用程序只需很少的时间。Spring Boot 建立在 Spring 之上,包含 Spring 的所有功能。如今,它正成为开发人员的最爱,因为它是一个快速可用于生产的环境,使开发人员能够直接专注于逻辑,而不必费力配置和设置。

Tomcat 是一个非常流行的 Java Servlet 容器。Tomcat 是默认的 Spring Boot 服务器,它可以在同一个应用程序中管理多个应用程序,从而避免在单个应用程序中为每个应用程序进行多次设置。

在本文中,我们将创建一个简单的 Spring Boot 应用程序,其中我们将使用 Tomcat 服务器部署该应用程序。

Spring Boot 上的项目部署流程

在 Tomcat Server 上部署 Spring Boot 应用程序涉及三个步骤:

  1. 创建示例 Spring Boot 应用程序
  2. 创建 Spring Boot WAR 的方法
  3. 将 WAR 部署到 Tomcat -- 最好需要更高版本的 Tomcat。

步骤 1:为 Tomcat 创建示例 Spring Boot 应用程序

这是一个 Spring Boot Web 应用程序项目,即需要将项目部署到 Tomcat 上。该项目可以创建为基于 Maven 的项目,因此我们可以在 pom.xml 文件中指定所需的依赖项。

复制代码
pom.xml->Configurations can be specified in a Maven project via pom.xml

由于项目需要使用 Tomcat 部署,因此必须将其打包为"WAR" Web 应用程序资源或 Web 应用程序存档)。

基本上,pom.xml 应该具有与 spring boot 相关的依赖项,例如

  • spring-boot-starter-parent
  • spring-boot-starter-web
  • spring-boot-starter-tomcat 及其范围设置为提供"geeks-web-services"应该是 pom.xml 中"WAR"文件的名称

示例 1:

  • 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.geeksforgeeks</groupId> <artifactId >spring-boot-war-deployment-example-on-tomcat</artifactId> <version >0.0.1-SNAPSHOT</version> <!-- As we need to deploy the project as WAR, this is needed --> <packaging >war</packaging> <name >SpringBootWarDeploymentOnTomcatServer</name> <description >Demo project for Spring Boot deployable on Tomcat</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> <!-- Spring web dependency --> <dependency> <groupId >org.springframework.boot</groupId> <artifactId >spring-boot-starter-web</artifactId> </dependency> <!--Servlet container has to be set as provided --> <dependency> <groupId >org.springframework.boot</groupId> <artifactId >spring-boot-starter-tomcat</artifactId> <scope >provided</scope> </dependency> <build> <!-- Our final war file name is geeks-web-services --> <finalName >geeks-web-services</finalName> <plugins> <plugin> <groupId >org.springframework.boot</groupId> <artifactId >spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> |

需要一个控制器类,通过它我们能够以 GET 方法或 POST 方法调用服务。作为示例,让我们看"SampleRestControllerExample.java",它包含两个" GET "方法

编写了两种方法,提供静态文本作为输出。

由于这是一个简单的例子,我们只需展示一下调用"geeks-web-services/hello"时显示的内容,Hello Geek,这是一个简单的问候消息,祝您有个美好的一天。

调用"geeks-web-services/greet"时显示Hello Geek,通过减少源代码,可以快速轻松地开发基于Spring的应用程序。

@RestController 是控制器的专门版本。它包括 @Controller 和 @ResponseBody 注释,从而简化了控制器实现。

示例 2: SampleRestControllerExample.java

  • Java

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; // Annotation @RestController // Class public class SampleRestControllerExample { @GetMapping("/hello") // Easy method just to print encouraging and consoling // words public String hello() { return "Hello Geek, this is a simple hello message to take care and have a nice day."; } @GetMapping("/greet") // Easy method just to print greeting message by saying // spring-based applications public String greet() { return "Hello Geek, Fast and easy development can be possible on Spring-based applications by reducing source code;."; } } |

第 2 步:创建 Spring Boot WAR 的方法

创建 Spring Boot WAR 有 3 种方法:

  • "Main" 类应该包含主类中的"extends SpringBootServletInitializer" 类。
  • "嵌入式 servlet 容器应标记为已提供。
  • 打包应该是 WAR

SpringBootWarDeploymentOnTomcatServer.java 是我们的主类

例子:

  • Java

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| // Java Program to Illustrate SpringBoot WarDeployment // On Tomcat Server // Importing required classes 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; // Annotation @SpringBootApplication // Class public class SpringBootWarDeploymentOnTomcatServer extends SpringBootServletInitializer { @Override // Configuring method has to be overridden protected SpringApplicationBuilder configure(SpringApplicationBuilder application){ return application.sources( SpringBootWarDeploymentOnTomcatServer.class); } // Method 2 // Main driver method public static void main(String[] args){ SpringApplication.run( SpringBootWarDeploymentOnTomcatServer.class, args); } } |

我们可以使用命令行运行 Maven 步骤,

复制代码
mvn clean install -X

让我们通过图像来看一下项目结构和目标文件夹:

当WAR文件创建成功后,控制台中会显示WAR文件路径以及"BUILD SUCCESS"的信息,如下图所示:

WAR 文件已创建

步骤 3:将 WAR 部署到 Tomcat

++++如果之前没有安装Apache Tomcat Server,++++则必须安装。最好使用更高版本的 tomcat。例如,我们使用 tomcat 版本 9.0.x。

++++要使用合适的 tomcat 版本和 java 版本,检查HTML 文件++++会很有帮助。在上一步中,我们得到了"geek-web-services.war",必须将其复制到 tomcat 的"webapps"文件夹下。

现在,打开命令提示符并指向 tomcat 位置的 bin 文件夹,

需要从 bin 文件夹提供"startup.bat"

该图显示 Spring Boot 已启动

而且我们的 war 文件也部署在 tomcat 中。下面的截图证实了这一点:

geek-web-services war 文件已部署

我们可以通过在浏览器中执行以下 URL 来测试相同内容:

geek-web-services/hello 输出

第二个输出:

geek-web-services/greetoutput

最后:

如上所述,Spring Boot 项目可以在 Tomcat 中部署。请记住以下列出的一些要点:

  • 默认情况下,Spring Boot 1.4.4.RELEASE 需要 Java 7 和 Spring Framework 4.3.6.RELEASE 或更高版本
  • 更高版本的Tomcat将有助于部署spring-boot应用程序。
相关推荐
customer082 小时前
【开源免费】基于SpringBoot+Vue.JS体育馆管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
Miketutu2 小时前
Spring MVC消息转换器
java·spring
乔冠宇2 小时前
Java手写简单Merkle树
java·区块链·merkle树
LUCIAZZZ3 小时前
简单的SQL语句的快速复习
java·数据库·sql
komo莫莫da4 小时前
寒假刷题Day19
java·开发语言
计算机-秋大田4 小时前
基于微信小程序的电子竞技信息交流平台设计与实现(LW+源码+讲解)
spring boot·后端·微信小程序·小程序·课程设计
S-X-S4 小时前
算法总结-数组/字符串
java·数据结构·算法
linwq85 小时前
设计模式学习(二)
java·学习·设计模式
桦说编程5 小时前
CompletableFuture 超时功能有大坑!使用不当直接生产事故!
java·性能优化·函数式编程·并发编程
@_@哆啦A梦5 小时前
Redis 基础命令
java·数据库·redis