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

发布于:2024-12-18 ⋅ 阅读:(7) ⋅ 点赞:(0)

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应用程序。