在本節(jié)中,我們將學(xué)習(xí)如何在Tomcat Server上部署Spring Boot應(yīng)用程序。
它包括三個(gè)步驟:
設(shè)置Spring Boot應(yīng)用程序 創(chuàng)建Spring Boot WAR 將WAR部署到Tomcat
讓我們創(chuàng)建一個(gè)可在Tomcat上部署的Maven示例
設(shè)置Spring Boot應(yīng)用程序
步驟1: 打開Spring Initializr http: //start.spring.io 。
步驟2: 提供 Group 名稱。我們提供了 com.nhooo。
步驟3: 提供 工件 ID。我們提供了 spring-boot-war-deployment-example。
步驟4: 添加 Spring Web 依賴項(xiàng)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
步驟5: 單擊 Generate (生成)按鈕。它包裝了與項(xiàng)目相關(guān)的所有規(guī)范,并在我們的本地系統(tǒng)中下載了 jar 文件。
步驟6: 提取 jar文件。
步驟7: 導(dǎo)入,請(qǐng)按照以下步驟操作:
文件->導(dǎo)入->現(xiàn)有Maven項(xiàng)目->下一步->瀏覽->選擇項(xiàng)目文件夾->完成
導(dǎo)入項(xiàng)目后,我們可以在IDE的 Package Explorer 部分中看到以下目錄結(jié)構(gòu)。
步驟8: 在包 com.nhooo 中創(chuàng)建Controller類。我們創(chuàng)建了一個(gè)名為 DemoRestController的類。
在控制器類內(nèi)部,我們定義了一個(gè)返回字符串的方法 hello()。
DemoRestController.java
package com.nhooo; 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: 作為Java應(yīng)用程序運(yùn)行 SpringBootWarDeploymentExampleApplication.java 文件。
步驟10: 打開瀏覽器并調(diào)用URL http: //localhost: 8080/hello。
它利用了Spring Framework的Servlet 3.0支持,并允許我們?cè)赟ervlet容器啟動(dòng)時(shí)配置應(yīng)用程序。要?jiǎng)?chuàng)建用于部署的WAR,有 三個(gè)步驟:
在主類中擴(kuò)展 SpringBootServletInitializer 類。 將嵌入式servlet容器標(biāo)記為已提供。 將包裝 JAR 更新為
讓我們?cè)趹?yīng)用程序中實(shí)現(xiàn)上述三個(gè)步驟。
步驟11: 打開 SpringBootWarDeploymentExampleApplication.java 文件并初始化Tomcat所需的Servlet上下文。為實(shí)現(xiàn)相同目的,擴(kuò)展了 SpringBootServletInitializer 接口。
public class SpringBootWarDeploymentExampleApplication extends SpringBootServletInitializer { }
步驟12: 覆蓋 Configure 方法。
@Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(SpringBootWarDeploymentExampleApplication.class); }
SpringBootWarDeploymentExampleApplication.java
package com.nhooo; 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)標(biāo)記為 已提供。
<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>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.nhooo</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>
要構(gòu)建可部署Tomcat的WAR應(yīng)用程序,我們執(zhí)行maven clean包。之后,將在 /target/abc.war (其中將 abc 假定為Artifact Id)處生成我們的WAR文件。我們應(yīng)該考慮到這種新設(shè)置使我們的Spring Boot Application成為 非獨(dú)立應(yīng)用程序。
步驟16: 創(chuàng)建 WAR 文件":
右鍵單擊項(xiàng)目-> Run As-> 5 Maven Build 一個(gè) Edit Configuration 對(duì)話框出現(xiàn)在屏幕上。 第17步: 在 目標(biāo)標(biāo)簽中編寫 全新安裝,然后檢查 跳過測(cè)試。分別單擊 應(yīng)用和 運(yùn)行按鈕。 成功創(chuàng)建WAR文件后,它會(huì)顯示 WAR文件路徑和消息 BUILD SUCCESS 在控制臺(tái)中,如下圖所示。 步驟18: 復(fù)制 路徑并訪問應(yīng)用程序的 target 文件夾。我們?cè)谀繕?biāo)文件夾中找到了與pom.xml文件中指定的名稱相同的WAR文件。在我們的實(shí)例中,路徑為: 要部署WAR文件,請(qǐng)按照以下步驟操作: 步驟19: 下載并安裝 Apache Tomcat Server (如果未安裝)。
C:\Users\Anubhav\Documents\workspace-sts-3.9.9.RELEASE\spring-boot-war-deployment-example\target
部署將WAR文件添加到Tomcat
步驟20: 復(fù)制WAR文件(web-services.war)并將其粘貼到
C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps
步驟21: 現(xiàn)在打開命令提示符并鍵入以下命令:
C:\Cd Program Files\Apache Software Foundation\Tomcat 8.5\bin C:\Cd Program Files\Apache Software Foundation\Tomcat 8.5\bin>startup
啟動(dòng)命令啟動(dòng)Tomcat服務(wù)器并部署WAR文件,如下所示。
下圖顯示了WAR已成功部署。
步驟23: 打開瀏覽器并調(diào)用URL http://localhost:8080/web-services/hello。它返回消息 您好,用戶好!。