Spring Boot应用的打包和部署


  

  传统的Web应用在发布之前通常会打成WAR包,然后将WAR包部署到Tomcat等容器中使用,而通过前面的学习我们已经知道,Spring Boot应用既能以JAR包的形式部署,又能以WAR包的形式部署。

JAR包

  打包方式是JAR,在idea中只需要执行Maven的package命令就可以将项目打成一个JAR包
  JAR包复制到系统D盘,并使用压缩软件打开。我们可以在其lib文件夹中发现很多JAR包,实际上这些JAR包就是项目所依赖的JAR包,其中还包括了Tomcat的JAR包
  由于在项目JAR包中已经包含了Tomcat,所以我们不需要另外部署Tomcat就可以在命令行中将项目启动起来。
  在命令提示符窗口中进入JAR包所在目录(D盘),并通过如下命令来执行JAR包:

java -jar springboot-0.0.1-SNAPSHOT.jar

 

WAR包

  虽然通过Spring Boot内嵌的Tomcat可以直接运行所打的JAR包,但是有时候我们也会希望通过外部的Tomcat来管理多个项目。由于JAR包在Tomcat中是无法运行的,所以我们需要将项目打成WAR包的形式。
  要想将项目打成WAR包,并可以在Tomcat中运行,需要执行以下两个步骤。

1. 修改打包方式,并添加Tomcat依赖

将项目pom.xml中<packaging>元素内的jar修改为war,并在文件中添加Tomcat的依赖配置。其修改和添加的配置信息如下:

<packaging>war</packaging>
...
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

 

  上述配置代码中,spring-boot-starter-tomcat是Spring Boot自带的Tomcat依赖,默认会被打到项目的lib包中。当我们将其依赖范围设置为provided时,将产生一个可执行的WAR包,在包中的lib-provided目录会有provided依赖。这样不仅可以部署到Servlet容器启动项目,还可以通过命令行执行java-jar命令来运行此应用。

2. 创建SpringBootServletInitializer子类,并覆盖其配置方法

  要产生一个可部署的war包,还需要提供一个SpringBootServletInitializer子类,并覆盖它的configure()方法。通常我们可以采用两种方式:一是把应用的主类(引导类)修改为继承SpringBootServletInitializer的类,并覆盖configure()方法;二是创建一个继承了SpringBootServletInitializer的类,并覆盖configure()方法。以创建SpringBootServletInitializer子类的方式为例,其子类实现代码如文件3-11所示。
  文件3-11 ServletInitializer.java

package com.xc.springboot;

import javafx.application.Application;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }
}

  完成这两步后,即可通过package命令将项目打成WAR包,然后将WAR包部署到Tomcat中启动。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM