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应用程序。
相关推荐
小码哥_常1 小时前
别再被误导!try...catch性能大揭秘
后端
无巧不成书02183 小时前
30分钟入门Java:从历史到Hello World的小白指南
java·开发语言
苍何3 小时前
30分钟用 Agent 搓出一家跨境网店,疯了
后端
ssshooter3 小时前
Tauri 2 iOS 开发避坑指南:文件保存、Dialog 和 Documents 目录的那些坑
前端·后端·ios
追逐时光者3 小时前
一个基于 .NET Core + Vue3 构建的开源全栈平台 Admin 系统
后端·.net
程序员飞哥4 小时前
90后大龄程序员失业4个月终于上岸了
后端·面试·程序员
zs宝来了4 小时前
Playwright 自动发布 CSDN 的完整实践
java
彭于晏Yan5 小时前
Redisson分布式锁
spring boot·redis·分布式
吴声子夜歌5 小时前
TypeScript——基础类型(三)
java·linux·typescript
GetcharZp5 小时前
Git 命令行太痛苦?这款 75k Star 的神级工具,让你告别“合并冲突”恐惧症!
后端