传统的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中启动。

Spring Boot应用的打包和部署的更多相关文章

  1. Spring Boot项目的打包和部署

    补充一点:搜索了下别人Spring Boot部署方案,大多都说:①packaging设为war:②要添加Spring Boot的tomcat依赖:③修改output路径,但是使用STS新建Spring ...

  2. Spring Boot(十二):spring boot如何测试打包部署

    Spring Boot(十二):spring boot如何测试打包部署 一.开发阶段 1,单元测试 在开发阶段的时候最重要的是单元测试了,springboot对单元测试的支持已经很完善了. (1)在p ...

  3. Spring Boot使用Maven打包替换资源文件占位符

    在Spring Boot开发中,通过Maven构建项目依赖是一件比较舒心的事,可以为我们省去处理冲突等大部分问题,将更多的精力用于业务功能上.近期在项目中,由于项目集成了其他外部系统资源文件,需要根据 ...

  4. 居然仅用浏览器,就完成了Spring Boot应用的开发与部署!

    最近有幸试用了一下阿里云的一个新产品:云开发平台,体验一把全新的开发模式!虽然中间也碰到了一些问题,但整体的体验透露着未来感,因为整个过程都不需要使用我们最常用的IDEA,仅依靠浏览器就把一个Spri ...

  5. spring boot项目Intellij 打包

    spring boot项目Intellij 打包 学习了:http://blog.csdn.net/hzt_fighting_up/article/details/78174291 在edit con ...

  6. Spring boot(4)-应用打包部署

    1.Spring Boot内置web spring Boot 其默认是集成web容器的,启动方式由像普通Java程序一样,main函数入口启动.其内置Tomcat容器或Jetty容器,具体由配置来决定 ...

  7. (转)Spring Boot(十二):Spring Boot 如何测试打包部署

    http://www.ityouknow.com/springboot/2017/05/09/spring-boot-deploy.html 有很多网友会时不时的问我, Spring Boot 项目如 ...

  8. spring boot(十二)打包部署

    有很多网友会时不时的问我,spring boot项目如何测试,如何部署,在生产中有什么好的部署方案吗?这篇文章就来介绍一下spring boot 如何开发.调试.打包到最后的投产上线. 开发阶段 单元 ...

  9. Spring Boot(十二):Spring Boot 如何测试打包部署

    有很多网友会时不时的问我, Spring Boot 项目如何测试,如何部署,在生产中有什么好的部署方案吗?这篇文章就来介绍一下 Spring Boot 如何开发.调试.打包到最后的投产上线. 开发阶段 ...

随机推荐

  1. 使用Navicat Premium 12导出SQL语句并在Power Designer 16.5中生成物理模型

    内容简介 本文主要介绍使用Navicat Premium 12导出建表SQL(使用MySQL数据库)文件,并在Power Designer 16.5中使用导出的SQL文件来生成物理模型的步骤. 操作步 ...

  2. 开放API接口安全处理

    一.开放API接口定义 顾名思义,开放出来给其他人调用的API接口就是开放API接口.例如,短信接口.邮件接口. 二.开放API的弱点 数据窃取 用户的密码等信息被不轨之人窃取,登录账号发布敏感信息, ...

  3. Kubernetes 学习26 基于kubernetes的Paas概述

    一.概述 1.通过以往的学习应该可以了解到k8s 和以往提到的devops概念更容易落地了.比如我们说的CI,CD,CD a.CI(Continuous Integration):持续集成 b.CD( ...

  4. WinDbg的安装、配置和功能

    一.WinDbg简介 WinDbg是微软发布的一款免费而十分强大的调试工具.既然是微软自己发布的调试工具,那它对微软产品的调试当然是十分的强大.Windows 调试器 (WinDbg) 可用于调试内核 ...

  5. 开始编写Makefile(二)Makefile变量的使用

    Makefile可以使用变量代替 命令行:make -f Makefile2 说明开始make一个名为Makefile2的文件 ###############定义变量################# ...

  6. 15、Work原理及源码分析

    一.Work原理 1.图解 Worker启动Driver的一个基本原理,就是Worker内部会启动一个线程,这个线程可以理解为,就是DriverRunner,然后DriverRunner就会去负责启动 ...

  7. AtCoder Grand Contest 019 题解

    传送门 \(A\) 咕咕 int a,b,c,d,n,t; int main(){ scanf("%d%d%d%d%d",&a,&b,&c,&d,& ...

  8. 本地Windows远程桌面连接阿里云Ubuntu服务器

    本地Windows远程桌面连接阿里云Ubuntu 16.04服务器: 1.目的:希望通过本地的Windows远程桌面连接到阿里云的Ubuntu服务器,通过远程桌面图形界面的方式操作服务器. 2.条件: ...

  9. YII框架的模块化技术

    一.模块的创建 利用yii的自动生成工具gii生成模块. 1.访问:lcoalhost/web/index.php?r=gii 2.点击 Module Generator 下面的 start 3.填写 ...

  10. 本地spark下保存rdd为文件

    写随笔大概也是做笔记记录下自己思考的意思吧,之前有些事情觉得做随笔还是比较有用的,mark一下一个有用的网址 关于rdd的操作,网上有很多很多的教程,当初全部顺一遍,除了对rdd这个类型有了点概念,剩 ...