开发手册 欢迎您!
软件开发者资料库

Spring Boot - Tomcat部署

Spring Boot Tomcat部署 - 从简单和简单的步骤学习Spring Boot,从基本到高级概念,包括简介,快速入门,Bootstrapping,Tomcat部署,构建系统,代码结构,Spring Bean和依赖注入,Runners,应用程序属性,日志记录等示例,构建RESTful Web服务,异常处理,拦截器,Servlet过滤器,Tomcat端口号,Rest模板,文件处理,服务组件,Thymeleaf,使用RESTful Web服务,CORS支持,国际化,调度,启用HTTPS,Eureka服务器,服务注册Eureka,Zuul代理服务器和路由,Spring云配置服务器,Spring云配置客户端,执行器,管理服务器,管理客户端,启用Swagger2,创建Docker镜像,跟踪微服务日志,Flyway数据库,发送电子邮件,Hystrix,Web套接字,批处理服务,Apache Kafka的Spring,Twilio,单元测试用例,休息控制器单元测试,数据库处理,安全Web应用程序,带有JWT的OAuth2,Google云平台,Google OAuth2登录。

通过使用Spring Boot应用程序,我们可以创建一个war文件以部署到Web服务器中.在本章中,您将学习如何创建WAR文件并在Tomcat Web服务器中部署Spring Boot应用程序.

Spring Boot Servlet Initializer

传统的部署方式是使Spring Boot Application @SpringBootApplication 类扩展 SpringBootServletInitializer 类. Spring Boot Servlet Initializer类文件允许您在使用Servlet Container启动时配置应用程序.

用于JAR文件部署的Spring Boot Application类文件的代码在下面给出 :

package com.it1352.demo; import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class DemoApplication {   public static void main(String[] args) {      SpringApplication.run(DemoApplication.class, args);   }}

我们需要扩展类 SpringBootServletInitializer 以支持WAR文件部署. Spring Boot Application类文件的代码在下面给出 :

package com.it1352.demo; import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.boot.web.support.SpringBootServletInitializer;@SpringBootApplicationpublic class DemoApplication  extends SpringBootServletInitializer {   @Override   protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {      return application.sources(DemoApplication.class);   }   public static void main(String[] args) {      SpringApplication.run(DemoApplication.class, args);   }}

设置主类

在Spring Boot中,我们需要提一下应该在构建文件中启动的主类.为此,您可以使用以下代码和减号;

对于Maven,在 pom.xml 属性中添加启动类,如下所示 :

com.it1352.demo.DemoApplication

对于Gradle,在build.gradle中添加主类名,如下所示 :

mainClassName="com.IT屋.demo.DemoApplication"

将包装JAR更新为WAR

我们必须使用以下代码和减号将包装JAR更新为WAR;

对于Maven,将包装作为WAR添加到 pom.xml 中如下所示 :

 war

对于Gradle,在 build.gradle 中添加应用程序插件和war插件,如下所示 :

 apply plugin:'war' apply plugin:'application'

现在,让我们编写一个简单的Rest Endpoint来返回字符串"Tomcat中的Hello World".要编写Rest Endpoint,我们需要将Spring Boot Web starter依赖项添加到我们的构建文件中.

对于Maven,使用如下所示的代码在pom.xml中添加Spring Boot启动程序依赖项低于 :

   org.springframework.boot   spring-boot-starter-web

对于Gradle,使用如下所示的代码在 build.gradle 中添加Spring Boot启动器依赖项 :

dependencies { compile('org.springframework.boot:spring-boot-starter-web')}

现在,使用如下所示的代码在Spring Boot Application类文件中编写一个简单的Rest端点 :

package com.it1352.demo; import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.boot.web.support.SpringBootServletInitializer;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@SpringBootApplication@RestControllerpublic class DemoApplication  extends SpringBootServletInitializer {   @Override   protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {      return application.sources(DemoApplication.class);   }   public static void main(String[] args) {      SpringApplication.run(DemoApplication.class, args);   }      @RequestMapping(value = "/")   public String hello() {      return "Hello World from Tomcat";   }}

打包您的应用程序

现在,创建一个WAR文件进行部署通过使用Maven和Gradle命令将应用程序打包到Tomcat服务器中,如下所示 :

对于Maven,使用命令 mvn package 打包应用程序.然后,将创建WAR文件,您可以在目标目录中找到它,如下面给出的屏幕截图所示 :

Maven MVN Package


Maven Packaging Application Target Directory

对于Gradle,使用命令 gradle clean build 打包应用程序.然后,将创建WAR文件,您可以在 build/libs 目录下找到它.观察此处给出的屏幕截图,以便更好地理解 :

Gradle Clean Build Command


Maven打包应用程序目标目录

部署到Tomcat

现在,运行Tomcat服务器,并在 webapps 目录下部署WAR文件.观察此处显示的屏幕截图,以便更好地理解 :

Tomcat Web Application Maneger


webApps Directory

成功部署后,点击URL在您的网络浏览器中 http://localhost:8080/demo-0.0.1-SNAPSHOT/并观察输出将如下面给出的屏幕截图所示 : 去;

成功部署截图

下面给出了完整的代码.

pom.xml

4.0.0   com.it1352   demo   0.0.1-SNAPSHOT   war   demo   Demo project for Spring Boot            org.springframework.boot      spring-boot-starter-parent      1.5.8.RELEASE                   UTF-8      UTF-8      1.8      com.it1352.demo.DemoApplication                     org.springframework.boot         spring-boot-starter-web                     org.springframework.boot         spring-boot-starter-test         test                                       org.springframework.boot            spring-boot-maven-plugin                     

build.gradle

buildscript {   ext {      springBootVersion = '1.5.8.RELEASE'   }   repositories {      mavenCentral()   }dependencies {      classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")   }}apply plugin: 'java'apply plugin: 'eclipse'apply plugin: 'org.springframework.boot'apply plugin: 'war'apply plugin: 'application'group = 'com.it1352'version = '0.0.1-SNAPSHOT'sourceCompatibility = 1.8mainClassName = "com.it1352.demo.DemoApplication"repositories {   mavenCentral()}dependencies {   compile('org.springframework.boot:spring-boot-starter-web')   testCompile('org.springframework.boot:spring-boot-starter-test')}

主Spring Boot ap的代码plication类文件在下面给出 :

package com.it1352.demo; import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.boot.web.support.SpringBootServletInitializer;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@SpringBootApplication@RestControllerpublic class DemoApplication  extends SpringBootServletInitializer {   @Override   protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {      return application.sources(DemoApplication.class);   }   public static void main(String[] args) {      SpringApplication.run(DemoApplication.class, args);   }      @RequestMapping(value = "/")   public String hello() {      return "Hello World from Tomcat";   }}